节点流。可读的可读事件触发两次

时间:2016-07-29 07:10:14

标签: node.js events stream

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

为什么在readable回调中stream.read()后发生了第二次readable事件?

stream.Readable两次发出readable

如果我在readable上设置了一个监听器,readable事件会在stream.read()

之后再次触发

节点版本5.12,Windows 10

1。如果我在创建流后立即读取,则为null

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

enter image description here

2。如果我在200毫秒后读取,则读取成功,不再发出readable个事件

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

![image](timeout.gif)

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

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

![image](onreabable.gif)

GIT Repo with complete working example

0 个答案:

没有答案