流和事件循环 - 数据处理程序是否总是在下一个滴答时触发?

Streams and event loop - do data handlers always fire on next tick?

假设我有一个可读流,如下所示:

const strm = fs.createReadStream(file);
strm.on('data', function onData(d){});

我的问题是,onData 回调是否会在事件循环的下一个节拍中触发?或者 onData 处理程序是否可以在事件循环的同一滴答中被调用两次?

数据处理程序可以在事件循环的同一时刻触发多次,请参阅:

https://github.com/nodejs/help/issues/1222

Yes:

const stream = require('stream'); 
const readable = new stream.Readable({read(){}}); 
readable.on('data', () => console.log('data')); 
process.nextTick(() => console.log('next tick'));
readable.push('foo'); 
readable.push('foo'); 

Output:

data data next tick