Ответ 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
, где вы можете использовать несколько каналов для обработчиков.