0
我有一个异步节点流的数组,我想并行使用是否有一个简单的方法来做到这一点在高地js?我试图让所有这些数组通过聚合函数。管道节点流与高地js并行
我有一个异步节点流的数组,我想并行使用是否有一个简单的方法来做到这一点在高地js?我试图让所有这些数组通过聚合函数。管道节点流与高地js并行
你希望做这样的事情:
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
但这导致性能因为该功能必须跟踪所有不同的流。
类似的情况,但不是阅读文件我试图消耗多个http请求(大约一百),然后管道他们到一个json解析器提取字段。 – user3791980
很酷。原理完全一样,所以我更新了与http请求一起工作的答案。 – Stefano