单stream的多重消费

我想知道是否有可能多个函数可以消耗node.js中的单个stream。 如果是的话这个怎么办? 是否可以pipe道到多个目的地?

我想在两个不同的平行function中使用这个stream。 我正在使用asynchronous模块进行并行stream程。 那么是否可以说在这些函数中发出pipe()语句?

提前致谢。

是的 ,这是可能的,简单和通用的。 以下是从单一来源到多个来源的pipe道数据stream。 它向您展示了一个匿名callback函数,该函数被放置在包含写入函数stream的事件循环中,该循环执行实际的写入工作:

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()允许你在将来进行stream水线操作,做一些漂亮的事情,非常类似于du . | sort -rn | less这样的unix概念du . | sort -rn | less du . | sort -rn | less du . | sort -rn | less在哪里你可以使用多个pipe道处理程序。