我想每10秒执行一次函数。如何做最简单的方法?在core.async中,有一个超时功能,它将在MOST等待那个时间,而我想要的是在那个时间等待。
最佳答案
at-at是我的最爱。以下示例是从网页复制的:
(use 'overtone.at-at)
(def my-pool (mk-pool))
(at (+ 1000 (now)) #(println "hello from the past!") my-pool)
如果通常使用core.async,chime也很棒。
再次,从他们的例子:
(:require [chime :refer [chime-ch]]
[clj-time.core :as t]
[clojure.core.async :as a :refer [<! go-loop]])
(let [chimes (chime-ch [(-> 2 t/secs t/from-now)
(-> 3 t/secs t/from-now)])]
(a/<!! (go-loop []
(when-let [msg (<! chimes)]
(prn "Chiming at:" msg)
(recur)))))