我想用bacon.js事件流池实现生产者使用者模式。这是我要解决的特定问题:
我有一个“ n”个网址列表。我想创建事件流以对这些URL发出HTTP请求,但我想一次将其限制为“ x”个流(“ x”网络请求)。
在上述流的事件处理程序中,我创建了一个新的事件流,该事件流将http响应写入文件。但是我想将一次写入文件的流的数量限制为“ y”。
在Gevent / Java中,我将创建适当大小的线程池并使用适当线程池中的线程。我如何为事件流做类似的事情?
最佳答案
使用flatMapWithConcurrencyLimit,您将能够控制生成的流的数量:
function fetchUsingHttp(url) { .. } // <- returns EventStream of http result
function writeToFile(data) { .. } // <- returns EventStream of file write result
var urls; // <- EventStream of urls
var maxRequests, maxWrites; // <- maximum concurrency limits
var httpResults = urls.flatMapWithConcurrencyLimit(maxRequests, fetchUsingHttp)
var fileWriteResults = httpResults.flatMapWithConcurrencyLimit(maxWrites, writeToFile)
fileWriteResults.log()
关于javascript - 使用bacon.js事件流池实现生产者/消费者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23850570/