如何限制写入core.async通道的频率?

时间:2014-04-21 17:29:22

标签: clojure clojurescript

是否有一种简单的方法可以将写入频率限制为core.async通道?到目前为止,我可以找到两个例子。一个使用滑动缓冲区和一些SetTimeout魔术来处理这个,另一个使用外部原子作为计数器。我原以为core.async提供了开箱即用的功能。由于其中一个例子相当陈旧(10个月),我想知道是否有更简单的解决方案?

我正在寻找适用于Clojure和ClojureScript的解决方案。

1 个答案:

答案 0 :(得分:2)

throttler lib提供了对Clojure代码施加速率控制的功能(包括通道或功能上的限制)。

自述文件:

(def in (chan 1))
(def slow-chan (throttle-chan in 1 :millisecond)) ; 1 msg/ms

(>!! in :token) ; => true
(<!! slow-chan) ; :token