J'essaie de comprendre core.async dans ma REPL et je suis complètement confus quant à la façon dont mon utilisation de (go-loop ...) ne parvient pas à se qualifier de "blocage" pour async />!Pourquoi "Assert failed:>! Used not in (go ...) block"
Mon go-boucle est comme ...
(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)))))
Mais le REPL est tout bouleversé ...
=>
#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
...
Pourquoi pas la portée de cette (go-loop ...)
suffisante pour l'appel (async/>! row)
?
Devrais-je même utiliser une boucle de déclenchement ici?
double possible de [Clojurescript - Uncaught Erreur: OlegTheCat
@OlegTheCat La réponse peut être la même, mais ce n'est pas exactement la même question. Tout comme 2 + 5 = 7 et 8 - 1 = 7 ne sont pas vraiment la même question même si la réponse est la même. Autrement dit, si quelqu'un connaît intimement core.async, cela peut ressembler à la même question mais à quelqu'un de nouveau ... disons googling pour ce message d'exception, vous n'arriveriez pas à cette question Clojurescript lorsque vous cherchez ce message d'exception. –