2016-01-19 39 views

回答

1

你希望做这样的事情:

const request = require('request'); 
const nodeStreams = [request('http://www.example.com'), 
        request('http://www.example1.com')]; 

hl(nodeStreams) 
.map(hl) 
.merge() 
.map(JSON.parse) 
.each(console.log); 

我将解释什么是怎么回事。您从一组节点流开始,然后使用map将它们转换为高地流,以便您拥有一串流。 merge函数然后将所有值合并成单个流。所有这些数据流将被并行读取,但map(JSON.parse)只能一次对它们进行调用。如果你想paralellise更多的计算,那么你要你打电话merge之前做尽可能多的与每个流:

hl(nodeStreams) 
.map(stream => hl(stream).map(JSON.parse)) 
.merge().each(console.log); 

如果请求事项的顺序,那么你应该使用parallel但这导致性能因为该功能必须跟踪所有不同的流。

+0

类似的情况,但不是阅读文件我试图消耗多个http请求(大约一百),然后管道他们到一个json解析器提取字段。 – user3791980

+0

很酷。原理完全一样,所以我更新了与http请求一起工作的答案。 – Stefano