首页 文章

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

提问于
浏览
0

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

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

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

但是为什么在管道到 Transform 流时不会触发 end 事件 .

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

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

1 回答

  • 1

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

    只需在'finish'上替换'end'

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

相关问题