繁体   English   中英

使用bacon.js事件流池实现生产者/消费者

[英]Implementing producers/consumers with bacon.js event stream pool

我想用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM