我想弄清楚我的REPL中的core.async,並完全混淆了我的用法(go-loop ... )無法成爲異步/>目的的「go block」!爲什麼「斷言失敗:>!不用於(去...)塊」
我去環是像...
(async/go-loop [page (range 3)]
(if (empty? page)
(async/close! ch)
(dorun (map (fn [row]
(println row)
(async/>! ch row)) page)))
(recur (range (dec (count page)))))
但REPL是全部打亂...
=>
#object[clojure.core.async.impl.channels.ManyToManyChannel
0x23465937
"[email protected]"]
0
Exception in thread "async-dispatch-12" java.lang.AssertionError: Assert failed: >! used not in (go ...) block
nil
...
爲什麼不是(go-loop ...)
足夠的(async/>! row)
通話範圍?
我是否應該在這裏使用循環?
[Clojurescript的可能的複製 - 未捕獲錯誤:<!使用不在(去...)塊](https://stackoverflow.com/questions/32037795/clojurescript-uncaught-error-used-not-in-go-block) – OlegTheCat
@OlegTheCat答案可能是相同的,但它不完全相同的問題。就像2 + 5 = 7和8 - 1 = 7並不是同一個問題,即使答案是一樣的。換句話說,如果一個人非常熟悉core.async,這可能看起來像是同一個問題,但是對於一個新的......說google搜尋該異常消息,在尋找這個異常消息時,你不會得到這個Clojurescript問題。 –