位置: 编程技术 - 正文

用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 安装)

  • 小规模纳税人征税率为多少
  • 新注册公司没有员工怎么报个税
  • 购入交通运输设备计入什么科目
  • 季度利息分录
  • 增值税附加计入什么科目
  • 车费报销计入什么费用
  • 当月没有收入,发生的人工和费用怎么办
  • 物业公司银行存款专款专怎么做分录
  • 税收的基本特点有
  • 医疗器械行业进销存软件
  • 如果一直没到国税局办理登记怎么办
  • 外出经营活动税收管理证明和跨区域涉税事项报告表
  • 问答技巧例子
  • 暑假工需要什么条件
  • 银行存款二级科目怎么增加
  • 全资子公司合并抵消
  • windows10如何开启wifi
  • 什么情况下公司可以开除员工
  • 非一般纳税人可以抵扣吗
  • 客户预付的购货款是收入吗
  • 预算会计的特点包括
  • 不动产增值税总结
  • php中strtotime
  • echarts高德地图自定义区域
  • 所有者权益变动表范本
  • 旅游费发票可以报销吗
  • 店面装修费怎么算
  • wisdm数据集
  • php连接
  • 蓝牙11
  • lstm输出多个预测值
  • 狂神说css笔记
  • 超过离线开票限定时间怎么办
  • 合伙企业的经营所得税率
  • 小企业库存商品会计分录
  • 劳务派遣应如何签合同
  • 财务报表逾期了两个月有罚款吗
  • mongodb的安装配置
  • 织梦联动筛选教程
  • python中返回结果为true
  • 增值税专用发票和普通发票的区别
  • 销售折扣单独开票的会计分录
  • 收到退货怎么做会计分录
  • 建筑企业工程结算账务处理
  • 生活服务的行业
  • mongodb数据库语句
  • 收回上年度拨款怎么做账
  • 实际已缴纳所得税额怎么填
  • 劳务费是否属于工资
  • 公司中标
  • 员工异地工作
  • 企业对疫情
  • 可转债不卖会亏钱吗
  • 员工伤残补助会计分录
  • sql数据库压缩能提高性能吗
  • win8系统开机界面
  • linux pb
  • centos 7.0截屏快捷键有冲突该怎么更换?
  • cool file viewer pro是什么软件
  • linux磁盘管理fdisk
  • ubuntu和windows比较有什么好处
  • 如何隐藏应用软件
  • xp电脑繁体系统改简体
  • sethook.exe - sethook进程是什么文件 有何作用
  • pcards
  • linux定时任务实现原理
  • perl如何使用
  • JS实现的ajax和同源策略(实例讲解)
  • nodejs 异步任务队列
  • 简述android应用的常用开发模式及其优缺点
  • shell错误日志输出
  • html中meta
  • android原生框架
  • js下拉菜单的制作方法
  • 顺丰收取关税合理吗
  • 郑州市华润燃气多少钱一立方
  • 陕西国家税务
  • 辽宁省地方税务局公告2014年第10号
  • 小规模纳税人专票开1%还是3%
  • 出口退税申报时间规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设