【问题标题】:Multiple listeners / go blocks for channel in ClojureScriptClojureScript 中通道的多个侦听器/go 块
【发布时间】:2015-01-25 22:15:06
【问题描述】:

在 ClojureScript 中给定一个通道

(def navigation (chan))

是否可以有多个 go 块从中提取值?例如

(go
 (while true
   (secretary/dispatch! (<! navigation))))

(go
 (while true
   (println (<! navigation))))

将值放入:

(put! channels/navigation "/styles")

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

【问题讨论】:

    标签: clojure clojurescript core.async


    【解决方案1】:

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

    【讨论】:

    • 谢谢@Joost。在我创建票并投票关闭作为我找到的另一张票的副本后大约 10 分钟,我意识到了这一点。感谢您的回答。
    【解决方案2】:

    您可能想查看core.async 中的pubsub 函数。这仍然意味着@Joost 提到的多个渠道。

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      相关资源
      最近更新 更多