管道传输到流转换器时未触发结束事件

end event is not fired when piping to stream transformer

在下面的代码中,正确触发了读取流的 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

您可以在 'finish' 事件中执行操作。

只需将 'end' 替换为 'finish'

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