位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享用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 安装)

  • 报销用专票
  • 成本核算的三种基本方法
  • 增值税应税销售额包括哪些
  • 银行代发工资户允许有余额吗
  • 小规模没有成本票企业所得税怎么办呀
  • 公司补缴社保协议书
  • 商超陈列费
  • 固定资产成本包括包装费吗
  • 购进货物建不动产进项税额抵扣
  • 购买虚开增票怎么处理?
  • 特许权使用费所得包括
  • 递延所得税负债是什么意思
  • 小规模纳税人不允许开具零税率发票
  • 购进原材料验收入库,贷款商业汇票结算
  • 职工宿舍租赁费
  • 如何网上认证发票流程
  • 对方收到发票不付款怎么办
  • 学校需要开发票吗,学校的纳税人识别号是什么?
  • 个人所得税需要计提吗?怎么做会计分录
  • 未认证进项税额转出
  • 小规模纳税人购买货物怎么入账
  • 物流公司的保险服务属于什么费用
  • 企业的其他业务收入有
  • 个人所得税由公司承担的账务处理
  • 租赁设备发票备注栏怎么填写
  • 银行汇票超期退回怎么办
  • 因质量问题扣款协议
  • 工会经费列支比例
  • pniopcacexe是什么进程
  • 代个人多交的社保怎么查
  • hypertrm.exe系统错误
  • movie maker是什么软件
  • 咨询公司流程完整
  • 销项负数发票怎么报税
  • thinkphp ide
  • PHP:imagelayereffect()的用法_GD库图像处理函数
  • php如何生成html
  • 单位车辆车船使用税滞纳金如何交
  • 有关厉元朗的小说
  • sortable js
  • 《一文搞懂IoU发展历程》GIoU、DIoU、CIoU、EIoU、αIoU、SIoU
  • 怎么保证发票是真的
  • 建筑行业预交增值税税率是多少
  • 参展费会计分录
  • 收到汇算清缴后怎么处理
  • 房地产企业将开发产品用于职工福利
  • 在建工程账务核算及处理
  • 简述记账后的凭证修改方法
  • 外勤会计是做什么的
  • 更正申报补缴税款会影响记录
  • 小微企业短小频急
  • 个人增值税发票税率
  • 营改增之后账务怎么处理
  • 关联方交易金额达到多少算转移定价
  • 办理外经证后缴税怎么交
  • 电商行业的采购
  • 给员工发中秋福利的用词
  • 融资租赁与经营租赁的区别主要是
  • 会务费可以抵扣进项税额吗
  • 完成认证后开具什么证明
  • 买辆车要交多少税
  • 怎么样创建
  • mysql全部语法
  • xp系统安装版如何安装
  • elf.exe是什么程序
  • 2021年win10累积更新
  • 电脑为什么会黑屏
  • 64位的win10更新安装补丁KB3105213失败总是重复安装该怎么办?
  • win10更新系统遇到错误
  • win7如何禁用网卡
  • win10升级安装视频
  • Linux如何清理磁盘空间
  • OpenGL Tips: 在Visual C++中调用FreeGLUT
  • jquery地址
  • using kernel
  • jquery get(0)
  • shell脚本监听端口
  • shell脚本位置变量
  • unityui
  • 2018城镇土地使用税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号