ClojureScript 中通道的多个侦听器/go 块



给定 ClojureScript 中的通道

(def navigation (chan))

是否有可能有多个 go 块从中提取值?

例如
(go
 (while true
   (secretary/dispatch! (<! navigation))))
(go
 (while true
   (println (<! navigation))))

将值放入:

(put! channels/navigation "/styles")

这似乎不起作用,仅在第一个 Go 块中执行。这是一个有点人为的例子,但我确实想使用此模式让多个侦听器到一个通道,该通道将从 socket.io 服务返回 JSON。

从频道读取将返回该值并将其从频道中删除。如果您希望多个阅读器读取相同的值,则需要多个通道;看看 Core.async mult 并点击函数。

您可能

想查看 core.async 中的 pub 和子函数。正如@Joost提到的,这仍然意味着多个渠道。

最新更新