Clojure的有promise
,future
,delay
,等,但没有一个是语义上类似于jQuery的一个Deferred对象。如果在值可用之前取消引用,它们通常会阻塞。延迟的对象利用回调。Clojure(不是ClojureScript)本身提供什么,类似于jQuery Deferred?
您可以使用其他Clojure构造来获取所需的内容,但是我认为核心Clojure中没有类似的东西。
举一个简单的例子,它使用future
计算值但将其提供给提供的回调函数:
(defn deferred [func cb]
(future (let [v (func)]
(cb v))))
;; (deferred #(do (Thread/sleep 1000) 7) #(println %))
您可以添加特殊的异常处理,并用于future-done?
检查值是否已准备好而不阻塞。(在某些情况下,面向回调的异步行为方法非常好,但是,如果您没有对Clojure提供的其他方法进行过多试验,您可能也会发现它们非常适合。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句