节点流中的结束事件和完成事件有什么区别

What's the difference between end and finish events in Node streams

Node.js 流同时触发 endfinish 事件。两者有什么区别?

endfinish 是同一事件,但在不同类型的流上。

  • 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) 是可读和同时写入流。要区分流上的读取结束和写入结束,您必须触发不同的事件。因此,对于双工流,end 是读取结束,finish 是写入结束。