This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-01-15
Channels
- # adventofcode (6)
- # beginners (63)
- # boot (39)
- # cider (25)
- # clara (9)
- # cljs-dev (27)
- # clojure (100)
- # clojure-dev (39)
- # clojure-dusseldorf (7)
- # clojure-italy (32)
- # clojure-russia (23)
- # clojure-spec (28)
- # clojure-uk (51)
- # clojurescript (197)
- # core-async (44)
- # cursive (3)
- # datomic (14)
- # emacs (4)
- # fulcro (27)
- # graphql (23)
- # hoplon (4)
- # jobs (9)
- # juxt (1)
- # leiningen (3)
- # nyc (1)
- # off-topic (6)
- # om (7)
- # onyx (6)
- # parinfer (11)
- # re-frame (23)
- # reagent (15)
- # ring-swagger (1)
- # rum (15)
- # shadow-cljs (37)
- # sql (24)
- # uncomplicate (4)
- # unrepl (17)
@potapenko не понял юзкейса для либы
это в основном для игр, где тебе нужно последовательно показывать и изменение данных (стейта) и отрисовывать.
Например тебе нужно создать очередь, например в игре, показать одну анимацию, потом поменять стейт чтобы циферку поменять - показать информацию о балансе например игрока, потом еще какие телодвижения. В очередь поместил, все хорошо. Но проблема что стейт поменялся где-то в середине очерди. А тебе нужно отрисовывать или вычислять в этой точке на основании новых данных.
вот конвейер он создаст новые элементы очереди где-то посередине и добавит их так, что разрабочику не нужно будет ничего думать как это синхронизировать.
обычная очередь всегда помещает новые шаги в конец, а нужно чтобы один элемент очереди “разложился” на несколько других.
@misha короче как будет у тебя кейс, где последовательность действий сложную нужно будет делать и всяки if/else еще в процессе - сразу захочешь такое.
такой "выполнятор" последовательных действий в кложе - agent, в скрипте - атом, потому что однопоточный жс
а может там какой-то нюанс, который я не учитываю, ради решения которого стоит и в либку обернуть
“Вложенность” вот главная фича. Когда ты делаешь это через core.async тебе нужно заботится о callstack - ждать в главне chain-е, кода выполнится chan в вызываемой фукнции. А таких вот цепочек може быть много. Подход с conveyor это упрощает. Можешь сделать через core.async, конечно, но мне не хватало моего старого решения. Все получается наглядно и понятно.
да у меня как-то и юзкейса пока не было именно так, с таймаутами чейнить вызовы функций. разве что в составе стейтмашины, но твой конвеер как отдельная компонента скорее всего не сгодится (в той машине, что у меня недописанная)