管道连接到流式变压器时不会触发结束事件

时间:2018-12-09 10:22:38

标签: node.js node.js-stream

在以下代码中,已正确触发读取流的end事件。

const frs = createReadStream("./file.txt", {
  encoding: "utf8"
});

frs
  .on("data", chunk => {
    console.log(chunk);
  })
  .on("error", err => {
    throw err;
  })
  .on("end", () => {
    doSomething()
  });

但是为什么在管道传输到end流时未触发Transform事件。

frs
  .pipe(transform1)
  .pipe(transform2)
  .on("error", err => {
    throw err;
  })
  .on("end", () => {
    doSomething()
  });

在第二种情况下(管道传输),在流结束时如何调用doSomething

1 个答案:

答案 0 :(得分:2)

您可以在“完成”事件中执行操作。

只需在“完成”上替换“结束”

frs
.pipe(transform1)
.pipe(transform2)
.on("error", err => {
  throw err;
})
.on("finish", () => {
  doSomething()
});