Node.js 流会同时触发end
和finish
事件。两者之间有什么区别?
end
和finish
是相同的事件,但在不同类型的流上。
-
stream.Readable
只开火end
,从不finish
-
stream.Writable
只开火finish
,从不end
来源: https://nodejs.org/dist/latest-v5.x/docs/api/stream.html
为什么同一事件的命名不同?
我能想到的唯一原因是因为双工流(stream.Duplex
),它同时实现stream.Readable
和stream.Writable
接口(https://nodejs.org/dist/latest-v5.x/docs/api/stream.html#stream_class_stream_duplex)是可读和可写的流。若要区分流上的读取结束和写入结束,必须触发不同的事件。因此,对于双工流end
是读取结束,finish
是写入结束。