ClojureScript 上 core.async 的超时
Timeouts with core.async on ClojureScript
我有一个从 ClojureScript 端口读取值的循环。在预定义的超时(比如 5 秒)后,我需要 退出循环 如果没有出现任何值超过另一个预定义的超时(比如 200 毫秒)我还需要 退出循环.
我的意思是激发循环,结束它并运行其他东西,例如另一个函数。
这可能吗?
使用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
)
我有一个从 ClojureScript 端口读取值的循环。在预定义的超时(比如 5 秒)后,我需要 退出循环 如果没有出现任何值超过另一个预定义的超时(比如 200 毫秒)我还需要 退出循环.
我的意思是激发循环,结束它并运行其他东西,例如另一个函数。
这可能吗?
使用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
)