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 提供的其他方法进行过多次实验,您可能会发现它们也很适合。)
关于jquery - Clojure 相当于 jQuery Deferred?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859823/