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