事件:'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'事件。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。