You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.4 KiB
JavaScript
70 lines
1.4 KiB
JavaScript
3 years ago
|
"use strict";
|
||
|
|
||
|
const Promise = require("bluebird");
|
||
|
|
||
|
const pipe = require("@promistream/pipe");
|
||
|
const map = require("@promistream/map");
|
||
|
const spy = require("@promistream/spy");
|
||
|
const collect = require("@promistream/collect");
|
||
|
const fromIterable = require("@promistream/from-iterable");
|
||
|
const forkMirror = require("./");
|
||
|
|
||
|
return Promise.try(() => {
|
||
|
let [ streamA, streamB ] = pipe([
|
||
|
fromIterable([ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" ]),
|
||
|
forkMirror(2, { bufferSize: Infinity, leaderMode: false }) // NOTE: Change `leaderMode` to see the output order change
|
||
|
]).read();
|
||
|
|
||
|
return Promise.all([
|
||
|
pipe([
|
||
|
streamA,
|
||
|
map((string) => {
|
||
|
return Promise
|
||
|
.resolve(`[stream A] ${string}`)
|
||
|
.delay(20); // Emulate some slow processing step
|
||
|
}),
|
||
|
spy((value) => console.log(value)),
|
||
|
collect()
|
||
|
]).read(),
|
||
|
pipe([
|
||
|
streamB,
|
||
|
map((string) => `[stream B] ${string}`),
|
||
|
spy((value) => console.log(value)),
|
||
|
collect()
|
||
|
]).read(),
|
||
|
]);
|
||
|
}).then((results) => {
|
||
|
console.log(results);
|
||
|
|
||
|
/*
|
||
|
[
|
||
|
[
|
||
|
'[stream A] a',
|
||
|
'[stream A] b',
|
||
|
'[stream A] c',
|
||
|
'[stream A] d',
|
||
|
'[stream A] e',
|
||
|
'[stream A] f',
|
||
|
'[stream A] g',
|
||
|
'[stream A] h',
|
||
|
'[stream A] i',
|
||
|
'[stream A] j',
|
||
|
'[stream A] k'
|
||
|
],
|
||
|
[
|
||
|
'[stream B] a',
|
||
|
'[stream B] b',
|
||
|
'[stream B] c',
|
||
|
'[stream B] d',
|
||
|
'[stream B] e',
|
||
|
'[stream B] f',
|
||
|
'[stream B] g',
|
||
|
'[stream B] h',
|
||
|
'[stream B] i',
|
||
|
'[stream B] j',
|
||
|
'[stream B] k'
|
||
|
]
|
||
|
]
|
||
|
*/
|
||
|
});
|