Яка різниця між завершенням та завершенням подій у потоках Node


Відповіді:


132

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кінець запису.


1
А також Transformпотік має і те, endі інше finish. Дійсно, це поширюється Duplex.
Рокко Мусоліно,

це все ще діє в API Steams після Node.js версії 8?
Олександр Міллс

1
@AlexanderMills Що сказали документи ( nodejs.org/dist/latest-v12.x/docs/api/stream.html )? Крім того, ви можете спробувати простий тестовий приклад, наприклад, fs.ReadStream та fs.WriteStream - nodejs.org/dist/latest-v12.x/docs/api/… . Не соромтеся надавати свої висновки.
tiblu

endданих проти finished роботи має сенс. Можливо, запис, який отримав усі дані, які він збирається отримати, наприклад, він отримав дані endз вищого рівня, але все ще працює. (Я не впевнений, але здогадуюсь, що перетворення finishedзавжди настає після end?)
Крейг Хікс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.