Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将两个分叉合并回一个流,并在highlandjs中使用它?_Javascript_Highland.js - Fatal编程技术网

Javascript 如何将两个分叉合并回一个流,并在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 现在我想分成两个,对它们都做些什么,然后把两个分叉合并成一个流。(或者换个说法:我想将流分成两部分,但它们的

使用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";

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