Node.js流同时触发end和finish事件。两者有什么区别?
Answers:
end并且finish是在不同类型的流上的相同事件,但
stream.Readableend永远不会触发finishstream.Writablefinish永远不会触发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是阅读的结束,而是写作的结束。
end数据与finished 工作之间的关系是有道理的。一个可写对象可能已经收到了它将要获取的所有数据,例如,它end从上游收到了一个数据,但仍在工作。(我不确定,但猜想finished总是要进行转换end吗?)
Transform流有两个end和finish事件。确实,它在延伸Duplex。