Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concurrency 如何防止未交付的承诺被挂起?_Concurrency_Clojure - Fatal编程技术网

Concurrency 如何防止未交付的承诺被挂起?

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

以下是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 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."))