与高地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
,但这会产生性能开销,因为该函数必须跟踪所有不同的流。
我有一个要并行使用的异步节点流数组,在 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
,但这会产生性能开销,因为该函数必须跟踪所有不同的流。