pouya
pouya

Reputation: 3766

end event is not fired when piping to stream transformer

In the following code the end event of read stream is fired properly.

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

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

But why the end event is not fired when piping to Transform streams.

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

In the second case (piping) how to call doSomething when stream is ended?

Upvotes: 0

Views: 415

Answers (1)

Pavlo
Pavlo

Reputation: 649

You can perform actions in 'finish' event.

Just replace 'end' on 'finish'

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

Upvotes: 3

Related Questions