给定 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提到的,这仍然意味着多个渠道。