У меня подписка на стор с массивом внутри и нужно выполнять асинхронные действия с элементами ( добавлять/обновлять их в Map )
Проблема в том что стор может обновляться каждые 10 мс, и он не дожидается предыдущей обработки .subscribe
Я оьычно в рабитмкю сгружаю
Мьютекс ?
Да, он и нужен. А нет референсной реализации или хорошего пакета?
https://www.effect.website/ возможно вот
Вот пример реализации асинхронной очереди https://pastebin.ubuntu.com/p/HgtnsN5s5Q/ Можно доработать сделав параметр для ограничения количества паралельно выполняющихся асинхронных операций, если это требуется
это вполне себе синхронная очередь
так в этом и смысл асинхронного стора, что мы можем добавлять или удалять элементы без блокировки подписки.
Да действительно я упустил это при переделке - убрал сет таймаут при запуске таска)
я не до конца понял что именно вы делаете, но кажется вам нужен дебаунс на сторе. поищите, есть несколько готовых реализаций
ему скорее всего нужен консистентный стор пока идёт процесс обработки после последнего обновления. Так как клонировать весь стор на каждый чих не эффективно, а MVCC сюда вводить не рационально то просто lock должен спасти. Но да, деталей не хватает.
https://github.com/sveltetools/svelte-asyncable
Обсуждают сегодня