Node.js Streams lösen sowohl Ereignisse end
als auch finish
Ereignisse aus. Was ist der Unterschied zwischen beiden?
Node.js Streams lösen sowohl Ereignisse end
als auch finish
Ereignisse aus. Was ist der Unterschied zwischen beiden?
Antworten:
end
und finish
sind das gleiche Ereignis, ABER auf verschiedenen Arten von Streams.
stream.Readable
feuert NUR end
und NIEfinish
stream.Writable
feuert NUR finish
und NIEend
Quelle: 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.Readable
und stream.Writable
Schnittstellen ( 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 end
ist das Ende des Lesens und finish
das Ende des Schreibens.
end
von Daten vs. finished
Arbeiten macht Sinn. Ein beschreibbarer Benutzer hat möglicherweise alle Daten empfangen, die er erhalten wird, z. B. hat er Daten end
von Upstream erhalten, funktioniert aber immer noch. (Ich bin nicht sicher, aber zu vermuten, dass für eine Transformation finished
immer danach kommt end
?)
Transform
Stream hat beidesend
undfinish
Ereignisse. In der Tat erstreckt es sichDuplex
.