事件:'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'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
