@potapenko не понял юзкейса для либы
как бы там все понятно описано. нет?
тем не менее )
это в основном для игр, где тебе нужно последовательно показывать и изменение данных (стейта) и отрисовывать.
Например тебе нужно создать очередь, например в игре, показать одну анимацию, потом поменять стейт чтобы циферку поменять - показать информацию о балансе например игрока, потом еще какие телодвижения. В очередь поместил, все хорошо. Но проблема что стейт поменялся где-то в середине очерди. А тебе нужно отрисовывать или вычислять в этой точке на основании новых данных.
вот конвейер он создаст новые элементы очереди где-то посередине и добавит их так, что разрабочику не нужно будет ничего думать как это синхронизировать.
обычная очередь всегда помещает новые шаги в конец, а нужно чтобы один элемент очереди “разложился” на несколько других.
@misha короче как будет у тебя кейс, где последовательность действий сложную нужно будет делать и всяки if/else еще в процессе - сразу захочешь такое.
в чистой clojure думаю такое использовать для state machine
где-то для флэша была статья
попрошу у флэшеров, может где осталось
читаю
мне просто это ну очень напоминает (cond->) или обычный корасинк канал
+ ты очередью называешь сразу и очередь (лол) функций на выполнение, и их выполнение
хотя это опять же редюс или луп
такой "выполнятор" последовательных действий в кложе - agent, в скрипте - атом, потому что однопоточный жс
может я бы просто такое в либу не оборачивал, хз.
а может там какой-то нюанс, который я не учитываю, ради решения которого стоит и в либку обернуть
“Вложенность” вот главная фича. Когда ты делаешь это через core.async тебе нужно заботится о callstack - ждать в главне chain-е, кода выполнится chan в вызываемой фукнции. А таких вот цепочек може быть много. Подход с conveyor это упрощает. Можешь сделать через core.async, конечно, но мне не хватало моего старого решения. Все получается наглядно и понятно.
да у меня как-то и юзкейса пока не было именно так, с таймаутами чейнить вызовы функций. разве что в составе стейтмашины, но твой конвеер как отдельная компонента скорее всего не сгодится (в той машине, что у меня недописанная)
спрведливости ради, я до анимаций на мобилочках и вебе пока не добрался, может там будет как раз в тему
это для игровой логики еще хорошо
все начиют с простого игрового loop и event-driven, потом приходят к очередям. а конвейер так вооще заставляет все переосмыслить. очень просто, но очень полезно.