Node流中的end和finish事件之间有什么区别

时间:2015-02-05 01:15:48

标签: node.js stream

Node.js流会触发endfinish个事件。两者之间的区别是什么?

1 个答案:

答案 0 :(得分:94)

endfinish在不同类型的Streams上是相同的事件。

  • stream.Readable仅在end和永久finish
  • 时触发
  • stream.Writable仅在finish和永久end
  • 时触发

来源:https://nodejs.org/dist/latest-v5.x/docs/api/stream.html

为什么同一事件的命名不同?

我能想到的唯一原因是双工流(stream.Duplex),它实现了stream.Readablestream.Writable接口(https://nodejs.org/dist/latest-v5.x/docs/api/stream.html#stream_class_stream_duplex)是可读写的流同时。要区分流的读取结束和写入结束,您必须触发不同的事件。因此,对于Duplex流end,读取结束并且finish即将结束。