Сохраняет ли порядок Node.js stream
вплоть до событий 'data'
включительно? Я полагаю, что да, и этот вопрос также, по-видимому, предполагает, по крайней мере, что pipe
методы последовательны.
Я хочу, чтобы порядок чанков был сохранен, чтобы я мог вызывать функцию, которая работает с каждым чанком до окончания потока, т. Е. Во время чтения одной части потока я хочу, чтобы чан буферизованных данных обрабатывался функция в событии 'data'
.
Однако, когда я запускаю следующий код, где я использовал Math.random
и setTimeout
, чтобы конкретно проверить, происходят ли события по порядку:
fs.createReadStream(filePath, { encoding: 'ascii' })
.pipe(streamToEntry)
.on('data', (chunk) => {
setTimeout(() => {
console.log(chunk);
}, Math.random() * 1000)
});
порции данных могут быть записаны не по порядку.
Это из-за setTimeout()
или из-за того, что событие 'data'
не обязательно вызывается последовательно? то есть, должна ли упорядоченная обработка происходить только в методах pipe
, или я могу обработать данные в конце последовательно?