Node.jsStreamondata触发时机与顺序的探索-创新互联

上次写Stream pipe细节时,在源码中发现一段无用逻辑,由此引发了对Stream data事件触发时机与顺序的探索。

成都创新互联公司服务项目包括云浮网站建设、云浮网站制作、云浮网页制作以及云浮网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,云浮网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到云浮省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

无用逻辑

当时研究pipe细节是基于Node.js v8.11.1的源码,其中针对上游的ondata事件处理有如下一段代码:

// If the user pushes more data while we're writing to dest then we'll end up
// in ondata again. However, we only want to increase awaitDrain once because
// dest will only emit one 'drain' event for the multiple writes.
// => Introduce a guard on increasing awaitDrain.
var increasedAwaitDrain = false;
src.on('data', ondata);
function ondata(chunk) {
  debug('ondata');
  increasedAwaitDrain = false;
  var ret = dest.write(chunk);
  if (false === ret && !increasedAwaitDrain) {
    if (((state.pipesCount === 1 && state.pipes === dest) ||
        (state.pipesCount > 1 && state.pipes.indexOf(dest) !== -1)) &&
      !cleanedUp) {
      debug('false write response, pause', src._readableState.awaitDrain);
      src._readableState.awaitDrain++;
      increasedAwaitDrain = true;
    }
    src.pause();
  }
}

分享标题:Node.jsStreamondata触发时机与顺序的探索-创新互联
文章地址:http://bzwzjz.com/article/ceipjo.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 手机网站制作 公司网站建设 成都商城网站制作 成都网站建设 成都网站建设 网站设计 重庆网站建设 企业网站设计 成都营销网站建设 网站建设方案 宜宾网站设计 营销网站建设 成都网站设计 高端网站建设 成都网站设计 手机网站建设 定制网站制作 自适应网站设计 成都品牌网站设计 教育网站设计方案 网站制作公司 企业网站制作