Я только заметил, что семейство pipeline
возвращает channel
, который, по-видимому, полностью работает независимо от цели трубопровода и связанных с ним каналов.Почему «core.async/конвейер» возвращает канал?
Обратите внимание, что в следующем примере вы можете >!/<!
от pipes
и a>/b>
отдельно, и они не связаны.
Насколько я понимаю, pipeline
s должно быть не оп, и вернуться nil
при настройке sideffecting transduc
Тион от a>
к b>
.
Итак, что мне не хватает, и почему pipeline
возвращает channel
?
(def a> (chan))
(def b> (chan))
(def pipes (pipeline-blocking 4
b>
(map clojure.string/upper-case)
a>))
(go (>! pipes "hello world"))
(go (println "Pipes: " (<! pipes)))
(go (>! a> "apples are gooood"))
(go (println "B: " (<! b>)))
Это имело смысл, и дал мне достаточно, чтобы провести эксперимент, который я отправил в ответ вместе с вашими. Пожалуйста, дайте мне знать, если мое объяснение отключено! –