clojure - ClojureScript 上的 core.async 超时

标签 clojure clojurescript core.async

我有一个从 ClojureScript 端口读取 vals 的循环。在预定义的超时(例如 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
  )

关于clojure - ClojureScript 上的 core.async 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32673108/

相关文章:

dictionary - 如何重构Clojure源代码,特别是重命名 map 集合的关键字?

python - Python 成语 "if __name__ == ' __main_ _'"的 clojure 等价物是什么?

clojure - 为什么 TCO 需要 VM 的支持?

electron - Clojurescript:如何使 Web 应用程序版本与桌面 Electron 版本共存

javascript - 使用 Clojure 向 JavaScript 添加语法

clojure - 使用 core.async 等待 n 个 channel

clojure - 从 go block 中获取信息

heroku - 全新的 Luminus 应用程序给出错误 : Could not find or load main class clojure. main

clojure - 在 clojure 中定期运行任务的最简单方法是什么