行为是否在预期的下面描述?

为什么在可读回调中的stream.read()之后触发了第二个可读事件?


stream.Readable发出两次可读的内容

如果我将侦听器设置为可读,则可读事件在stream.read()之后再次触发

node version 5.12,windows 10

1.如果我在创建流后立即读取,我会得到null

stream = fs.createReadStream(inFile);
result = stream.read();

enter image description here

2.如果我在200毫秒后读取,则读取成功,不会发出进一步的可读事件

stream = fs.createReadStream(inFile);
function _main() {
    result = stream.read();
}
setTimeout(_main, delay);

image

3.如果我在可读事件的回调中读取,则读取成功,但会发出第二个可读事件

stream = fs.createReadStream(inFile);
stream.on('readable', () => {
    result = stream.read()
});

image


GIT Repo完整的工作示例