Node.js Streams lösen sowohl Ereignisse endals auch finishEreignisse aus. Was ist der Unterschied zwischen beiden?
Node.js Streams lösen sowohl Ereignisse endals auch finishEreignisse aus. Was ist der Unterschied zwischen beiden?
Antworten:
endund finishsind das gleiche Ereignis, ABER auf verschiedenen Arten von Streams.
stream.Readablefeuert NUR endund NIEfinishstream.Writablefeuert NUR finishund NIEendQuelle: https://nodejs.org/dist/latest-v5.x/docs/api/stream.html
Warum die unterschiedliche Benennung des gleichen Ereignisses?
Der einzige Grund, an den ich denken könnte, sind Duplex-Streams ( stream.Duplex), die beide implementieren, stream.Readableund stream.WritableSchnittstellen ( https://nodejs.org/dist/latest-v5.x/docs/api/stream.html#stream_class_stream_duplex ) sind lesbar und gleichzeitig beschreibbarer Stream. Um zwischen dem Ende des Lesens und dem Ende des Schreibens im Stream zu unterscheiden, muss ein anderes Ereignis ausgelöst werden. SO, für Duplex-Streams endist das Ende des Lesens und finishdas Ende des Schreibens.
endvon Daten vs. finished Arbeiten macht Sinn. Ein beschreibbarer Benutzer hat möglicherweise alle Daten empfangen, die er erhalten wird, z. B. hat er Daten endvon Upstream erhalten, funktioniert aber immer noch. (Ich bin nicht sicher, aber zu vermuten, dass für eine Transformation finishedimmer danach kommt end?)
TransformStream hat beidesendundfinishEreignisse. In der Tat erstreckt es sichDuplex.