往往当我在repl中使用core.async时,一个go块会跑飞,因为我丢失了用于停止它的通道,原因是我重新加载了命名空间。比如,如果我从repl中运行下面的代码:
(go (when (not= c (second (async/alts! [c (async/timeout 1000)])))
(println "hello")))
我重新加载了命名空间,结果变量c丢失了。现在"hello"会一直出现在我的REPL中,除非我终止程序。如果我可以关闭所有通道或终止所有go块,那么就不用重启REPL了。