Javascript 如何将两个分叉合并回一个流,并在highlandjs中使用它?
使用highlandjs创建流时,我知道我可以像这样使用它:Javascript 如何将两个分叉合并回一个流,并在highlandjs中使用它?,javascript,highland.js,Javascript,Highland.js,使用highlandjs创建流时,我知道我可以像这样使用它: import * as high from "highland"; console.log("Single stream:"); const stream0 = high([1, 2, 3, 4, 5]); stream0.each(console.log); // each number will be printed 现在我想分成两个,对它们都做些什么,然后把两个分叉合并成一个流。(或者换个说法:我想将流分成两部分,但它们的
import * as high from "highland";
console.log("Single stream:");
const stream0 = high([1, 2, 3, 4, 5]);
stream0.each(console.log); // each number will be printed
现在我想分成两个,对它们都做些什么,然后把两个分叉合并成一个流。(或者换个说法:我想将流分成两部分,但它们的操作结果应该是相同的响应流。)
但我无法让它工作。这个例子非常做作,但也说明了我的问题:
import * as high from "highland";
const stream = high([1, 2, 3, 4, 5]);
const fork1 = stream.fork().filter(i => i % 2 === 0);
const fork2 = stream.fork().filter(i => i % 2 !== 0);
const result = fork1.concat(fork2);
result.each(console.log); // doesn't do anything
然后暂停结果流。我认为只有在所有的fork开始处理输入流之后才能启动fork,但我不确定如何启动它。在定义fork和concatation之后,我通过恢复源流使其工作:
const stream = high([1, 2, 3, 4, 5]);
const fork1 = stream.fork().filter(i => i % 2 === 0);
const fork2 = stream.fork().filter(i => i % 2 !== 0);
const result = fork1.concat(fork2);
stream.resume(); // starts the source stream!
result.each(console.log); // doesn't do anything
现在它将打印每个值(无序,但这是意料之中的):
我将使用:
const high = require('highland')
const stream = high([1, 2, 3, 4, 5])
const fork1 = stream.fork().filter(i => i % 2 === 0)
const fork2 = stream.fork().filter(i => i % 2 !== 0)
high([fork1, fork2]).merge().each(console.log) // 1 2 3 4 5
const high = require('highland')
const stream = high([1, 2, 3, 4, 5])
const fork1 = stream.fork().filter(i => i % 2 === 0)
const fork2 = stream.fork().filter(i => i % 2 !== 0)
high([fork1, fork2]).merge().each(console.log) // 1 2 3 4 5