阿西河

所有教程

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

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js stream 三种状态

      Node.js stream 三种状态

      可读流的两种模式是对发生在可读流中更加复杂的内部状态管理的一种简化的抽象。

      在任意时刻,可读流会处于以下三种状态之一:

      • readable.readableFlowing === null
      • readable.readableFlowing === false
      • readable.readableFlowing === true

      当 readable.readableFlowing 为 null 时,没有提供消费流数据的机制,所以流不会产生数据。 在这个状态下,监听 ‘data’ 事件、调用 readable.pipe()、或调用 readable.resume() 都会使 readable.readableFlowing 切换到 true,可读流开始主动地产生数据并触发事件。

      调用 readable.pause()、 readable.unpipe()、或接收到背压,则 readable.readableFlowing 会被设为 false,暂时停止事件流动但不会停止数据的生成。 在这个状态下,为 ‘data’ 事件绑定监听器不会使 readable.readableFlowing 切换到 true。

      const { PassThrough, Writable } = require('stream');
      const pass = new PassThrough();
      const writable = new Writable();
      
      pass.pipe(writable);
      pass.unpipe(writable);
      // readableFlowing 现在为 false。
      
      pass.on('data', (chunk) => { console.log(chunk.toString()); });
      pass.write('ok'); // 不会触发 'data' 事件。
      pass.resume(); // 必须调用它才会触发 'data' 事件。
      

      当 readable.readableFlowing 为 false 时,数据可能会堆积在流的内部缓冲中。


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


      目录
      本文目录
      目录