【发布时间】:2015-09-19 20:51:12
【问题描述】:
我有一个从 ClojureScript 端口读取 vals 的循环。在预定义的超时(例如 5 秒)后,我需要 退出循环,如果没有出现超过另一个预定义超时(例如 200 毫秒)的值,我还需要 退出循环。
我的意思是激发循环,结束它并运行其他东西,例如另一个函数。
这可能吗?
【问题讨论】:
标签: clojure clojurescript core.async
我有一个从 ClojureScript 端口读取 vals 的循环。在预定义的超时(例如 5 秒)后,我需要 退出循环,如果没有出现超过另一个预定义超时(例如 200 毫秒)的值,我还需要 退出循环。
我的意思是激发循环,结束它并运行其他东西,例如另一个函数。
这可能吗?
【问题讨论】:
标签: clojure clojurescript core.async
使用alts!
;; within your go-loop:
(let [[val ch] (alts! [my-ch (timeout 500)])]
(when (identical? my-ch ch)
;; dispatch val here...
(recur))
;; not calling recur here, to exit the loop
)
【讨论】: