事件:'readable'
历史
版本 | 变化 |
---|---|
v10.0.0 |
|
v10.0.0 | 使用 |
v0.9.4 | 添加于:v0.9.4 |
'readable'
事件在有可从流中读取的数据或到达流的末尾时发出。实际上,'readable'
事件指示流具有新信息。如果数据可用,
将返回该数据。stream.read()
const readable = getReadableStreamSomehow();
readable.on('readable', function() {
// There is some data to read now.
let data;
while ((data = this.read()) !== null) {
console.log(data);
}
});
如果已到达流的末尾,则调用
将返回stream.read()
null
并触发'end'
事件。如果从来没有任何数据要读取,这也是正确的。例如,在以下示例中,foo.txt
是一个空文件:
const fs = require('node:fs');
const rr = fs.createReadStream('foo.txt');
rr.on('readable', () => {
console.log(`readable: ${rr.read()}`);
});
rr.on('end', () => {
console.log('end');
});
运行此脚本的输出是:
$ node test.js
readable: null
end
在某些情况下,为'readable'
事件附加一个侦听器会导致将一些数据量读入内部缓冲区。
一般来说,readable.pipe()
和'data'
事件机制比'readable'
事件更容易理解。但是,处理 'readable'
可能会导致吞吐量增加。
如果同时使用'readable'
和
,则'data'
'readable'
优先控制流,即只有在调用
时才会发出stream.read()
'data'
。 readableFlowing
属性将变为 false
。如果在移除 'readable'
时有 'data'
侦听器,则流将开始流动,即 'data'
事件将在不调用 .resume()
的情况下发出。
相关用法
- Node.js Http2Session 'remoteSettings'事件用法及代码示例
- Node.js tls.Server 'resumeSession'事件用法及代码示例
- Node.js ClientHttp2Stream 'response'事件用法及代码示例
- Node.js InterfaceConstructor 'resume'事件用法及代码示例
- Node.js tty.WriteStream 'resize'事件用法及代码示例
- Node.js proces 'rejectionHandled'事件用法及代码示例
- Node.js REPLServer 'reset'事件用法及代码示例
- Node.js tls.Server 'keylog'事件用法及代码示例
- Node.js http.Server 'clientError'事件用法及代码示例
- Node.js cluste 'disconnect'事件用法及代码示例
- Node.js proces 'exit'事件用法及代码示例
- Node.js stream.Writable 'pipe'事件用法及代码示例
- Node.js stream.Readable 'end'事件用法及代码示例
- Node.js cluste 'fork'事件用法及代码示例
- Node.js stream.Writable 'unpipe'事件用法及代码示例
- Node.js Worker 'listening'事件用法及代码示例
- Node.js InterfaceConstructor 'pause'事件用法及代码示例
- Node.js fs.FSWatcher 'change'事件用法及代码示例
- Node.js stream.Readable 'data'事件用法及代码示例
- Node.js http.ClientRequest 'connect'事件用法及代码示例
- Node.js proces 'uncaughtException'事件用法及代码示例
- Node.js Http2Session 'localSettings'事件用法及代码示例
- Node.js REPLServer 'exit'事件用法及代码示例
- Node.js cluste 'online'事件用法及代码示例
- Node.js tls.TLSSocket 'session'事件用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 'readable'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。