NodeJs ReadStream机制分析

本文深入探讨Node.js的ReadStream机制,包括flow模式、readable模式和推荐的.pipe模式。分析了flow模式如何控制速度,readable模式如何通过read方法判断读取结束。同时解释了pipe模式的作用,以及on('data',..)如何触发flow模式。read方法的同步调用与异步数据读取间的协调,以及read()返回值与"data"事件的关系。还详细阐述了read方法中highWaterMark的含义,如何根据缓存和需求决定读取数据的量,以及何时调用_read方法从源头获取新数据。" 130296989,10661259,Netty底层原理:深入剖析epoll机制,"['Java', '网络编程', '系统编程', 'Netty框架', 'Linux系统']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读了一下午源代码,作者写的代码太难懂了,洋洋洒洒,勉强看懂。

ReadStream有两个模式,即flow模式和readable模式,一旦设定成一种模式,最好不要切换成另一种。


flow模式采用好处是可以控制速度,常见用法为

readable.on("data",function(data){
    var ret = writable.write(data);
   if(!ret){ 
      readable.pause();//暂停stream,将readable.flow=false
     writable.once('drain',function(){ 
        readable.resume(); //让readble继续干活。resume其实就是把readable.flow设置成true,然后调用后文所说的flow()方法。
    });
   }
});

readable.on("end",function());//do whatever you want



而readable模式则需要查看read方法的返回值,read()返回null,整个读取即告结束

readable.on("readable",function()){
   var ret = null;
  while((ret = readable.read()) != null){
  }
}

readable.on("end",function(){
    console.log("end");

});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值