jquery - Clojure 相当于 jQuery Deferred?

标签 jquery clojure promise jquery-deferred

Clojure 有 promisefuturedelay 等,但它们在语义上都与 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/

相关文章:

javascript - 将 <div> 附加到正文中一次

javascript - 从 knockoutjs 模型更改可观察值

javascript - 让搜索框在输入时获取页面

clojure - 绑定(bind)函数如何与 core.async 一起使用?

php - 如何创建自定义 jquery 轮播?

clojure - Clojure.Spec 的规范应该放在哪里?

vector - 在向量中交换两个元素的惯用方式是什么

javascript - 带有 Promise.all 的 url 数组?

javascript - promise 不会解决

javascript - Promise.resolve 返回未定义