node.js - 单流多次消费

标签 node.js express node.js-stream

我想知道是否有可能多个函数可以在 node.js 中使用单个流。如果是的话怎么做?是否可以通过管道传输到多个目的地?

我想在两个不同的并行函数中使用流。我正在使用异步模块进行并行流程。那么可以说在每个函数中发出 pipe() 语句吗?

提前致谢。

最佳答案

是的,这是可能的、简单的和常见的。以下是从单个源到多个源的管道数据流。它向您展示了放置在事件循环中的一个匿名回调函数,该函数包含执行实际写入工作的写入函数流:

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 概念。 |排序-rn | less 你可以在其中使用多个管道到处理程序。

关于node.js - 单流多次消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17957525/

相关文章:

javascript - 为什么此 Node.js 代码中没有触发 'finish' 事件?

javascript - 如何将传递给 Nodejs 的查询字符串转发到通过 res.render 提供服务的页面?

Node.js 图形魔术 : check installation & functionality

javascript - 使用 Cheerio 对象制作 For 循环的正确方法是什么?

node.js - Express 服务器、paypal 结帐、res.redirect 和 Uncaught SyntaxError : Unexpected token < in JSON at position 0

javascript - 使用 csv-parser 同步发出事件

javascript - 需要 Mongoose 模型并具有默认值

javascript - Db.Collection 不是一个函数 MongoDB

html - Ajax 将表单中的数据发送到 Express js 正文解析器

javascript - Node.js 网络库 : getting complete data from 'data' event