当使用clojure.core.async时,是否有一种方法让一个通道等待第一个项目被放入它,然后等待一些短暂的时间,然后获取当前在通道上的所有项目(可能在等待时到达),并且获取所有项目而不阻塞?
也就是说,是否有一种实现
基本上,类似于Java中的BlockingQueue.drain这样的东西。
也就是说,是否有一种实现
get-available-items
的方法:(defn delayer [ch ch2]
(go (loop []
(when-let [v (<! ch)]
(<! (timeout 500))
(let [vs (get-available-items ch)
items (cons v vs)]
(>! ch2 items))
(recur)))))
基本上,类似于Java中的BlockingQueue.drain这样的东西。