0

我有一组要并行使用的异步节点流,有没有一种简单的方法可以在高地 js 中做到这一点?我试图让所有这些数组都通过一个聚合函数。

4

1 回答 1

3

你是否想做这样的事情:

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,但这会导致性能开销,因为该函数必须跟踪所有不同的流。

于 2016-03-04T10:35:39.980 回答