Это документация потоков: https://millermedeiros.github.io/mdoc/examples/node_api/doc/streams.html
Вы можете видеть, что stdin - это Stream: https://nodejs.org/api/process.html#process_process_stdin
Итак, все, что относится к Stream, относится и к stdin.
событие данных:
Событие data генерирует либо Buffer (по умолчанию), либо строку, если
setEncoding () был использован.
Итак, событие data загружает порцию данных из Stream в буфер или строку.
конечное событие:
Издается, когда поток получил EOF (FIN в терминологии TCP).
Указывает на то, что больше никаких событий «данных» не произойдет. Если поток
также доступно для записи, возможно, можно продолжать писать.
Итак, конечное событие инициируется, что неудивительно, когда произошло последнее событие данных.
Чтобы объяснить это, давайте предположим, что у вас есть поток файла размером 2 ГБ. В этом случае куски данных загружаются из этого файла, давайте предположим, что размер кусков равен S. В этом случае у вас будет около 2 ГБ / с шагов загрузки. Это означает, что будет много событий данных, и система всегда будет запускать событие данных, пока есть следующий пакет для загрузки. В конце, когда больше нечего загружать, запускается конечное событие. Теперь, когда мы понимаем Streams, я думаю, что вы теперь понимаете, что то же самое происходит и с stdin. Ничто не препятствует тому, чтобы stdin внезапно получил очень большой объем данных.