javascript - 如何检查 node.js 中管道链的完成?

标签 javascript node.js pipe chain

例如,我有这个:

var r = fs.createReadStream('file.txt');
var z = zlib.createGzip();
var w = fs.createWriteStream('file.txt.gz');
r.pipe(z).pipe(w);

我想在 r.pipe(z).pipe(w) 完成后做一些事情。我试过这样的事情:

var r = A.pipe(B);
r.on('end', function () { ... });

但它不适用于管链。 我怎样才能让它发挥作用?

最佳答案

您正在寻找 finish 事件。来自docs :

When the end() method has been called, and all data has been flushed to the underlying system, this event is emitted.

当源流发​​出 end 时,它会在目标上调用 end(),在您的例子中,目标是 B。所以你可以这样做:

var r = A.pipe(B);
r.on('finish', function () { ... });

关于javascript - 如何检查 node.js 中管道链的完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964682/

相关文章:

javascript - 统计类数

javascript - 将函数的副本分配给 var

javascript - 堆叠 UIkit.modal 内置对话框

node.js - 为什么 Firebase 云数据库触发器无法提供用户信息?

node.js - 在 Promise.then 之后和 res.send 之前未按需要修改对象字段

Perl 作为批处理脚本工具 - 完全管道化子进程?

javascript - 嵌套资源的问题

javascript - PDFMake - 动态 pageMargins 取决于标题的高度

bash 函数保留制表符补全

Bash tail 命令和多个管道