阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js stream 两种读取模式

      Node.js stream 两种读取模式

      可读流运作于两种模式之一:流动模式(flowing)或暂停模式(paused)。

      • 在流动模式中,数据自动从底层系统读取,并通过 EventEmitter 接口的事件尽可能快地被提供给应用程序。
      • 在暂停模式中,必须显式调用 stream.read() 读取数据块。

      所有可读流都开始于暂停模式,可以通过以下方式切换到流动模式:

      • 添加 ‘data’ 事件句柄。
      • 调用 stream.resume()。
      • 调用 stream.pipe()。

      可读流可以通过以下方式切换回暂停模式:

      • 如果没有管道目标,则调用 stream.pause()。
      • 如果有管道目标,则移除所有管道目标。调用 stream.unpipe() 可以移除多个管道目标。

      只有提供了消费或忽略数据的机制后,可读流才会产生数据。 如果消费的机制被禁用或移除,则可读流会停止产生数据。

      为了向后兼容,移除 ‘data’ 事件句柄不会自动地暂停流。 如果有管道目标,一旦目标变为 drain 状态并请求接收数据时,则调用 stream.pause() 也不能保证流会保持暂停模式。

      如果可读流切换到流动模式,且没有可用的消费者来处理数据,则数据将会丢失。 例如,当调用 readable.resume() 时,没有监听 ‘data’ 事件或 ‘data’ 事件句柄已移除。

      添加 ‘readable’ 事件句柄会使流自动停止流动,并通过 readable.read() 消费数据。 如果 ‘readable’ 事件句柄被移除,且存在 ‘data’ 事件句柄,则流会再次开始流动。


      更多内容请参考:Node.js stream 流,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录