我有一系列异步节点流,我想并行使用是否有一种简单的方法在高地js中执行此操作?我试图让所有这些数组都通过聚合函数。
答案 0 :(得分:2)
你想做这样的事情:
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
将它们转换为Highland流,这样您现在就拥有了一个流流。然后merge
函数将所有值合并为单个流。所有这些流都将被并行读取,但map(JSON.parse)
只能一次调用它们。如果你想要对更多的计算进行并列化,那么你需要在调用merge
之前对每个流进行同样的操作:
hl(nodeStreams)
.map(stream => hl(stream).map(JSON.parse))
.merge().each(console.log);
如果请求的顺序很重要,那么您应该使用parallel
,但这会导致性能开销,因为该函数必须跟踪所有不同的流。