如何在ClojureScript/core.async中停止去块?

osh*_*hko 9 clojure clojurescript core.async

是否有一种优雅的方式来阻止跑步挡?

(没有引入标志并用支票/分支污染代码)

(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)
Run Code Online (Sandbox Code Playgroud)

Art*_*ldt 5

抱歉,今天无法使用core.async。创建一个go块后得到的结果是一个普通通道,该块的结果将被放到普通通道上,尽管这并不能为您提供对实际块本身的任何处理。