我正在寻找一种非常简单的方法来定期在Clojure中调用函数。
JavaScript的 setInterval
具有我想要的API。如果我在Clojure中重新想象它,它将看起来像这样:
(def job (set-interval my-callback 1000))
; some time later...
(clear-interval job)
出于我的目的,我不介意这是否创建新线程,在线程池中运行还是其他。计时是否准确也并不关键。实际上,提供的时间间隔(以毫秒为单位)可能只是一个 call 结束与下一个 call 开始之间的延迟。
最佳答案
Clojure还有很多调度库:
(从简单到非常高级)
直接来自at-at的github主页的示例:
(use 'overtone.at-at)
(def my-pool (mk-pool))
(let [schedule (every 1000 #(println "I am cool!") my-pool)]
(do stuff while schedule runs)
(stop schedule))
如果要在任务结束和下一个任务开始之间延迟一秒而不是两次启动之间延迟,请使用
(every 1000 #(println "I am cool!") my-pool :fixed-delay true)
。
关于clojure - 定期调用Clojure中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21404130/