我想使用Clojure core.async来编写一个循环轮询服务的应用程序,但我的尝试到目前为止意外终止.
当我运行这个程序时,它打印消息然后退出:
(defn -main
[]
(println "Running forever...?")
(async/go-loop [n 0]
(prn n)
(async/<!! (async/timeout 1000))
(recur (inc n))))
Run Code Online (Sandbox Code Playgroud)
我希望程序永远运行(直到JVM进程被终止).
实现这一目标的可接受方式是什么?
主线程将保持JVM进程运行(它不关心go池中的线程).
通过阻塞主线程使其保持运行.例如
(defn -main
[]
(println "Running forever...?")
(async/<!! (async/go-loop [n 0]
(prn n)
(async/<! (async/timeout 1000))
(recur (inc n)))))
Run Code Online (Sandbox Code Playgroud)
注意:您不应该<!!在go块内使用.你应该改用<!.
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |