Потоки Node.js запускають як події, так end
і finish
події. Яка різниця між ними?
Потоки 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
кінець запису.
end
даних проти finished
роботи має сенс. Можливо, запис, який отримав усі дані, які він збирається отримати, наприклад, він отримав дані end
з вищого рівня, але все ще працює. (Я не впевнений, але здогадуюсь, що перетворення finished
завжди настає після end
?)
Transform
потік має і те,end
і іншеfinish
. Дійсно, це поширюєтьсяDuplex
.