Concurrency 如何防止未交付的承诺被挂起?
以下是clojure为勇敢而真诚的人提供的一个例子:Concurrency 如何防止未交付的承诺被挂起?,concurrency,clojure,Concurrency,Clojure,以下是clojure为勇敢而真诚的人提供的一个例子: (time (let [butter-promise (promise)] (doseq [butter [yak-butter-international butter-than-nothing baby-got-yak]] (future (if-let [satisfactory-butter (satisfactory? (mock-api-call butter))] (deliver
(time
(let [butter-promise (promise)]
(doseq [butter [yak-butter-international butter-than-nothing baby-got-yak]]
(future (if-let [satisfactory-butter (satisfactory? (mock-api-call butter))]
(deliver butter-promise satisfactory-butter))))
(println "And the winner is:" @butter-promise)))
如果没有一种黄油产品符合我们的标准呢
(let [butter-promise (promise)]
;; ...
(if-let [winner (deref butter-promise 10000 nil)]
(println "And the winner is:" winner)
(println "Butter timed out."))