【发布时间】:2015-04-11 16:01:43
【问题描述】:
我在玩 core.async,发现它非常有趣。但是,我无法理解 mult 和广播的不同用例是什么。它们都需要还是会被另一个替换? 到目前为止,我发现的唯一区别是使用 mult 更容易点击和取消标记。不知道如何取消订阅广播,这是唯一的区别吗?
下面我有一个例子展示了如何使用这两种方法来解决问题。
;; Using mult with tap
(def in (chan))
(def multiple (mult in))
(def out-1 (chan))
(tap multiple out-1)
(def out-2 (chan))
(tap multiple out-2)
(go (>! in "PutIN"))
(go (prn "From out-1: " (<! out-1)))
(go (prn "From out-2: " (<! out-2)))
//
;; Using broadcast
(def bout-1 (chan))
(def bout-2 (chan))
(def broadcast-in (broadcast bout-1 bout-2))
(go (>! broadcast-in "PutINBroadcast"))
(go (prn "From bout-1: " (<! bout-1)))
(go (prn "From bout-2: " (<! bout-2)))
【问题讨论】:
标签: clojure clojurescript core.async