【发布时间】:2017-07-28 16:24:37
【问题描述】:
我创建了一个突出问题的小例子:
(->> (range 0 4)
(mapv (fn [i]
(http/get "http://http-kit.org/"
(fn [res]
(info "first callback")
(let [res2 @(http/get "http://http-kit.org/")]
(info "second callback ")))))))
卡在打印 4s 的第一个回调消息。
如果我将范围更改为 0..3 它将起作用,同步版本也起作用。
更新:
(info) 是一个 taoensso.timbre 日志库
【问题讨论】:
-
我在运行时没有发现任何问题。你得到一个包含 4 个 derefables 的向量,打印了 4 个“第一个回调”,并打印了 4 个“第二个回调”。作为健全性检查,请记住
(range 0 4)是 4 个元素,而不是 5 个。 -
@Josh 你可以尝试将范围更改为 10 个元素吗?
-
@Josh 我认为它可能因不同机器而异,取决于 CPU 内核。对我来说,我刚刚重新启动了我的 mac,并得到了 4 个 derefables 的响应,打印了 4 个“第一个回调”然后卡住了。