与高地js并行的管道节点流

pipe node streams in parallel with highland js

我有一个要并行使用的异步节点流数组,在 highland 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);

我将解释这里发生的事情。您从一组 Node 流开始,然后使用 map 将它们转换为 Highland 流,这样您现在就有了一个流。 merge 函数然后将所有值合并到一个流中。所有这些流都将被并行读取,但 map(JSON.parse) 一次只会调用一个。如果你想并行化更多的计算,那么你想在调用 merge:

之前对每个流做同样多的事情
hl(nodeStreams)
.map(stream => hl(stream).map(JSON.parse))
.merge().each(console.log);

如果请求的顺序很重要,那么您应该使用 parallel,但这会产生性能开销,因为该函数必须跟踪所有不同的流。