node.js - 如何使用 core.async 代替回调?

标签 node.js callback clojurescript core.async

我在 ClojureScript 上使用 core.async 以避免使用 node.js 回调。问题是我达到了 1024 条待处理消息的限制。

为了避免这种情况,我需要将所有消息发送到同一 go block 内的 channel 。但这在 core.async 上实际上是不可能的,因为匿名函数使 go 的效果无效,所以我不能这样做:

(go
  (. socket on "data" #(>! chan %)))

那么,有没有办法绕过这个限制呢?

最佳答案

我不确定我是否理解为什么它必须位于同一个 go block 中。通常,您只需这样做:

(. socket on "data" #(go (put! chan %)))

然后在另一个go block 中处理chan

关于node.js - 如何使用 core.async 代替回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908423/

相关文章:

node.js - 请求包含无法识别的参数:[type] in elastic search while making request for getting suggestion

node.js - 蒙戈错误: can't convert from BSON type missing to Date

javascript - 将参数传递给 onchange() 函数

Android:打开和关闭搜索小部件的回调

javascript - node.js 中的回调是始终异步还是始终同步?或者它们可以是 "sometimes one, sometimes the other"吗?

Clojure 嵌套 for 循环和索引

clojure - 如何在 HTML 中漂亮地打印 Clojure 数据结构?

javascript - ClojureScript HashMap 性能与 Javascript 对象的比较

node.js - Nodejs 通过电子邮件发送流

node.js - npm run build生产不分配生产