当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js readable.push(chunk[, encoding])用法及代码示例


readable.push(chunk[, encoding])

历史
版本变化
v8.0.0

chunk 参数现在可以是 Uint8Array 实例。


参数
  • chunk <Buffer> | <Uint8Array> | <string> | <null> | <any> 要推入读取队列的数据块。对于不在对象模式下运行的流,chunk 必须是字符串,BufferUint8Array。对于对象模式流,chunk 可以是任何 JavaScript 值。
  • encoding <string> 字符串块的编码。必须是有效的 Buffer 编码,例如 'utf8''ascii'
  • 返回: <boolean> true 如果可以继续推送额外的数据块; false 否则。

chunkBufferUint8Arraystring 时,将把 chunk 的数据添加到内部队列中,供流的用户使用。将 chunk 作为 null 传递表示流结束 (EOF),之后无法写入更多数据。

Readable在暂停模式下运行时,在 'readable' 事件触发时,可以通过调用 readable.read() 方法读出添加readable.push()的数据。

Readable 在流动模式下运行时,添加了readable.push() 的数据将通过发出'data' 事件来传递。

readable.push() 方法旨在尽可能灵活。例如,当包装提供某种形式的暂停/恢复机制和数据回调的 lower-level 源时,低级源可以由自定义 Readable 实例包装:

// `_source` is an object with readStop() and readStart() methods,
// and an `ondata` member that gets called when it has data, and
// an `onend` member that gets called when the data is over.

class SourceWrapper extends Readable {
  constructor(options) {
    super(options);

    this._source = getLowLevelSourceObject();

    // Every time there's data, push it into the internal buffer.
    this._source.ondata = (chunk) => {
      // If push() returns false, then stop reading from source.
      if (!this.push(chunk))
        this._source.readStop();
    };

    // When the source ends, push the EOF-signaling `null` chunk.
    this._source.onend = () => {
      this.push(null);
    };
  }
  // _read() will be called when the stream wants to pull more data in.
  // The advisory size argument is ignored in this case.
  _read(size) {
    this._source.readStart();
  }
}

readable.push() 方法用于将内容推入内部缓冲区。它可以通过 readable._read() 方法驱动。

对于未在对象模式下运行的流,如果 readable.push()chunk 参数为 undefined ,它将被视为空字符串或缓冲区。有关详细信息,请参阅 readable.push('')

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 readable.push(chunk[, encoding])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。