位置: 编程技术 - 正文

用NODE.JS中的流编写工具是要注意的事项(node.js的流的作用)

编辑:rootadmin

推荐整理分享用NODE.JS中的流编写工具是要注意的事项(node.js的流的作用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:简述node.js的流的作用,nodejs文件流,node.js的流的作用,node.js 文件流写入,nodejs文件流,node.js的流的作用,node.js的流的作用,node.js的流的作用,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.js中的流十分强大,它对处理潜在的大文件提供了支持,也抽象了一些场景下的数据处理和传递。正因为它如此好用,所以在实战中我们常常基于它来编写一些工具 函数/库 ,但往往又由于自己对流的某些特性的疏忽,导致写出的 函数/库 在一些情况会达不到想要的效果,或者埋下一些隐藏的地雷。本文将会提供两个在编写基于流的工具时,私以为有些用的两个tips。

一,警惕EVENTEMITTER内存泄露

在一个可能被多次调用的函数中,如果需要给流添加事件监听器来执行某些操作。那么则需要警惕添加监听器而导致的内存泄露:

用NODE.JS中的流编写工具是要注意的事项(node.js的流的作用)

在上述代码中,getSomeDataFromStream函数会在通过监听error事件和end事件,来在流报错或没有数据时,完成这个Promise。然而在执行代码时,我们很快就会在控制台中看到报警信息:(node) warning: possible EventEmitter memory leak detected. error listeners added. Use emitter.setMaxListeners() to increase limit.,因为我们在每次调用该函数时,都为传入的流添加了一个额外的error事件监听器和end事件监听器。为了避免这种潜在的内存泄露,我们要确保每次函数执行完毕后,清除所有此次调用添加的额外监听器,保持函数无污染:

二,保证工具函数的回调在处理完毕数据后才被调用

工具函数往往会对外提供一个回调函数参数,待处理完流中的所有数据后,带着指定值触发,通常的做法是将回调函数的调用挂在流的end事件中,但如果处理函数是耗时的异步操作,回调函数则可能在所有数据处理完毕前被调用:

以上的代码callback回调可能会在数据并未被全部处理时就被调用,因为流的end事件的触发时机仅仅是在流中的数据被读完时。所以我们需要额外地对数据是否已处理完进行检查:

这样一来,回调便会在所有数据都处理完毕后触发了。

安装使用Mongoose配合Node.js操作MongoDB的基础教程 安装mongoose使用express准备一个TestMongoDB项目,命令序列如下:expressTestMongoDBcdTestMongoDBnpminstall执行完上面的命令后,使用下面的命令安装mongoose:npminstallm

详解Wondows下Node.js使用MongoDB的环境配置 为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量

Node.js的MongoDB驱动Mongoose基本使用教程 使用mongoose可以让我们更好使用mongodb数据库,而不需要写繁琐的业务逻辑。安装npminstallmongoose初始化使用使用mongoose前,需安装node和mongodb,这里不讲node

标签: node.js的流的作用

本文链接地址:https://www.jiuchutong.com/biancheng/370680.html 转载请保留说明!

上一篇:Node.js编写组件的三种实现方式(node. js教程)

下一篇:安装使用Mongoose配合Node.js操作MongoDB的基础教程(mongo 安装)

  • 独立法人有什么风险
  • 预缴税款可以下调吗
  • 劳务派遣员工工伤用工单位承担责任吗
  • 债券到期收益率计算器
  • 水利建设专项收入怎么计算
  • 企业所得税的征税对象包括
  • 成品油一般经营企业交什么税
  • 业务有提成个税怎么扣
  • 交易性金融资产的交易费用计入哪里
  • 周转材料低值易耗品
  • 报销车费滴滴怎么打印电子发票
  • 日用品发票能报销吗
  • 勾选发票必须当月认证吗
  • 百旺红字发票申领流程
  • 无偿赠送要交税吗
  • 12366国税网上申报
  • 发票过期未认证可以用吗
  • 原材料盘亏会计分录怎么做
  • 少付的运费如何做分录
  • 投资性房地产转为自用的会计处理
  • 怎么访问海康硬盘录像机
  • 长期债权投资收回的利息 现金流量表
  • 糖尿病患者在什么情况下无需
  • movie maker是什么软件
  • PHP:curl_unescape()的用法_cURL函数
  • winspool.drv病毒
  • 个人投资所得税率是多少
  • 事业单位会计专业知识考什么
  • 营改增增值税会计处理
  • 预提费用的分录
  • 北京猿创源科技有限公司
  • 【角色扮演】
  • 程序员才能看懂的梗
  • 数据模型 excel
  • Laravel5权限管理方法详解
  • 出口退税备案是代理的需要主办会计身份证复印件吗
  • 其他免税销售额怎么算
  • 个体发票税率开错了怎么办
  • 民非企业银行利息计入其他收入,那增值税申报吗
  • 织梦程序
  • 公司举办活动方案
  • mysql 局域网访问权限
  • 个人补缴的医保有钱返吗
  • 母公司处置子公司合并报表
  • 公司法人与股东的区别
  • 固定资产抵债交不交增值税
  • 发票开错作废如何处理?
  • 收到银行承兑汇票
  • 合同没签定金可以退的吗
  • 所得税汇算清缴退税会计分录怎么做
  • 六大类科目的借贷口诀余额怎么填
  • 一般纳税人拿到普票怎么处理账务
  • 建筑公司直接把钱打到个人账户怎么走账
  • 购买维修费怎么做分录
  • 工程物资属于存货还是固定资产
  • 总资产周转率多少算正常
  • 职工福利费核算哪些内容
  • 私企需要计提盈余公积吗
  • 旅游饮食服务企业会计核算的特点包括
  • winxp任务管理器在哪
  • centos怎么样
  • freebsd做服务器
  • linux仿mac
  • win10企业版20h2和1909
  • 红石2代
  • 如何禁用u盘启动项
  • win8电脑d盘不见了怎么恢复
  • unity3d怎么样
  • jquery easyui validatebox remote的使用详解
  • python time模块日期运算
  • 蛋哥的日常
  • jupyter 安装python包
  • 一种新的运算符号类型的题
  • 求行驶时间的公式
  • javascript面向对象编程指南第三版
  • 车库契税怎么收费
  • 税务师事务所行政登记表怎么办理
  • 怎样在江苏智慧人社上停保
  • 全国砂石供应紧缺
  • 文化传媒公司能卖多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设