位置: 编程技术 - 正文

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

  • 进项税额转出的情况
  • 关税纳税申报时间
  • 水利基金申报表减除项填什么
  • 经济利益的流入一定是收入吗
  • 贸易公司没有仓库需要做入库
  • 发生福利费的会计分录
  • 电子承兑汇票如何贴现网银操作
  • 委托加工的应税消费品收回后直接出售
  • 公司从基本户转钱到一般户走流程?
  • 公司改变工资结构变相降工资怎么办
  • 工程款材料费票怎么开?
  • 保险的月缴纳可以调整么?
  • 纳税总额包括代扣代缴个人所得税吗
  • 实习生需要缴纳个税吗?
  • 工会开发票有税号吗?
  • 小规模附加税减免政策2023
  • 小微企业附加税减半
  • 纳税申报需要去税务局吗
  • 这个月只开了销项负数怎么办
  • 从贸易公司购买来的货物可以退税吗
  • 小企业成本核算方法移动加权平均法
  • 企业收到保险公司的赔款
  • 预付账款为负数能转为应付账款吗
  • 市政府的财政拨款怎么算
  • 腾讯手游助手如何隐藏键位
  • 关闭windows安全中心拦截
  • 实例简介php的一般过程
  • 融资a轮之前
  • 从国际空间站看木星
  • 海关进口增值税怎么认证抵扣
  • 投标报名费怎么定
  • 企业所得税申报表在哪里打印
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • php批量删除文件
  • 在php中,字符串有哪些表示形式
  • 纳税检查调整销售额什么意思
  • 简述跨期摊提账户
  • 体检费专票可以抵扣吗
  • 其他综合收益要结转到本年利润吗
  • 手工帐月末结转会计分录
  • 公司没有人需要申报个税吗
  • python卡方分布随机数
  • 非营利组织缴纳增值税账务处理
  • 会计科目备抵科目都有哪些
  • 金蝶kis专业版仓存期末结账
  • mysql基础操作命令
  • 对公转账需要填备注吗
  • MySQL导入导出命令
  • 小规模企业应交税费二级科目
  • 出售固定资产已开票未收款账务处理
  • 结转固定资产清理损益的账务处理
  • 商业承兑到期对方不付款会计分录
  • 多打的投资款怎么入账
  • 企业给职工发放的自产产品应作为职工福利费管理
  • 税金及附加科目余额在借方还是贷方
  • 记账凭证原始凭证回单的粘贴顺序
  • 房地产企业会计科目
  • SQL语句查询数据库账号和权限
  • windows10安装教程u盘安装
  • win2003无法启动
  • u盘安装centos7安装详细图解
  • win10rs2是哪个版本
  • 忘记ubuntu root密码
  • linux 文字处理
  • linux 桌面系统
  • win7桌面图标跑到最下面怎么办
  • linux拉起进程
  • cocos2dx 教程
  • unity Toggle Groud
  • Node.js中的全局变量有哪些
  • 充分发挥党员的先锋模范作用,积极
  • unity连接
  • AngularJS2 与 D3.js集成实现自定义可视化的方法
  • linux中gzip的用法
  • javascript 作用
  • js中的array数组有什么缺点
  • dom教学
  • python openfoam
  • 郑州市管城区地图范围
  • 自然资源税税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设