0

我想用一个 bacon.js 事件流池来实现生产者消费者模式。这是我要解决的具体问题:

我有一个“n”网址列表。我想创建事件流来为这些 url 发出 http 请求,但我想一次将其限制为 'x' 流('x' 网络请求)。在上述流的事件处理程序中,我创建了一个将 http 响应写入文件的新事件流。但我想一次将写入文件的流数限制为“y”。

在 Gevent/Java 中,我会创建适当大小的线程池并使用适当线程池中的线程。我如何为事件流做类似的事情?

4

1 回答 1

1

使用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()
于 2014-05-26T19:39:35.720 回答