Множественное потребление одного потока

Я хочу знать, возможно ли, что несколько функций могут потреблять один поток в node.js. Если да, как это сделать? Возможно ли подключиться к нескольким пунктам назначения?

Я хочу использовать поток в двух разных функциях, которые являются параллельными. Я выполняю параллельный поток, используя асинхронный модуль. Итак, можно ли выпустить инструкцию pipe() внутри каждой из этих функций?

Спасибо заранее.

Ответ 1

Да, это возможно, легко и просто. Ниже приведен потоковый поток данных из одного источника в несколько источников. Он показывает вам одну анонимную функцию обратного вызова, которая помещается в цикл событий, который содержит потоки функции записи, которые выполняют фактическую работу записи:

var fs  = require('fs');

var rs1 = fs.createReadStream ('input1.txt');                      
var ws1 = fs.createWriteStream('output1.txt');     
var ws2 = fs.createWriteStream('output2.txt');

rs1.on('data', function (data) {                                  
  console.log(data.toString('utf8'));                              
  ws1.write('1: ' + data);                                       
  ws2.write('2: ' + data);                                       
});

Более простой способ - использовать функции .pipe().

var fs  = require('fs');

var rs1 = fs.createReadStream ('input1.txt');                      
var ws1 = fs.createWriteStream('output1.txt');     
var ws2 = fs.createWriteStream('output2.txt');

rs1.pipe(ws1);
rs1.pipe(ws2);

.pipe() позволяет вам делать изящные вещи, такие как цепочка цепочек в будущем для манипулирования конвейерами, очень похожая на концепцию unix, например, du . | sort -rn | less, где вы можете использовать несколько каналов для обработчиков.