【发布时间】:2015-12-10 19:40:36
【问题描述】:
有没有优雅的方法来阻止正在运行的 go 块?
(不引入标志并使用检查/分支污染代码)
(ns example
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.core.async :refer [<! timeout]]))
(defn some-long-task []
(go
(println "entering")
; some complex long-running task (e.g. fetching something via network)
(<! (timeout 1000))
(<! (timeout 1000))
(<! (timeout 1000))
(<! (timeout 1000))
(println "leaving")))
; run the task
(def task (some-long-task))
; later, realize we no longer need the result and want to cancel it
; (stop! task)
【问题讨论】:
-
(close! task)也许? - 谷歌第一个结果。
标签: clojure clojurescript core.async