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