【问题标题】:Timeouts with core.async on ClojureScriptClojureScript 上的 core.async 超时
【发布时间】:2015-09-19 20:51:12
【问题描述】:

我有一个从 ClojureScript 端口读取 vals 的循环。在预定义的超时(例如 5 秒)后,我需要 退出循环,如果没有出现超过另一个预定义超时(例如 200 毫秒)的值,我还需要 退出循环

我的意思是激发循环,结束它并运行其他东西,例如另一个函数。

这可能吗?

【问题讨论】:

    标签: clojure clojurescript core.async


    【解决方案1】:

    使用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
      )
    

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多