位置: 编程技术 - 正文

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

  • 初级职称经济法基础重点
  • 固定资产摊余成本例题
  • 增值税减免税申报明细表免税代码和名称
  • etc怎么取过路费啊
  • 企业滞留发票的产生和处理
  • 质押费用计入什么科目
  • 财务收入支出明细表模板
  • 租赁的土地被征迁
  • 砂子开票税率
  • 在产品,产成品和库存商品的区别
  • 企业注销前需要固定资产清理吗
  • 期间费用包括哪些?
  • 增值税税率如何计算
  • 企业咨询费可以抵扣吗
  • 股权转让交的印花税怎么做会计分录
  • 高新企业所得税税率10%
  • 简述国内采购流程
  • 亏损企业季度盈利企业所得税怎么预缴?
  • 各类基本社会保障性缴款是单位缴纳部分吗
  • linux docx
  • 人工智能导论报告
  • PHP:session_encode()的用法_Session函数
  • mac桌面的东西怎么放回去
  • 拓展销售市场发生的业务招待费计入
  • php字段
  • 公司年终奖怎么缴税
  • 一般纳税人商业税负多少
  • 代理业务资产的含义
  • 拔缴经费收入
  • php文件用什么运行
  • php使用什么开发工具
  • iframe嵌套页面点击里面的按钮
  • 研发支出资本化支出属于什么科目
  • 视同销售的增值税怎么申报
  • 其他权益工具投资是什么意思
  • 居间协议合同范本完整版
  • 进口关税账务处理办法
  • 结转费用类会计分录怎么写
  • 盈利性学校收到财政补贴要缴企业所得税吗
  • switch关键账号教程
  • 程序员35岁 知乎
  • 发票冲红如何进入系统
  • 固定资产的
  • 开票信息修改
  • 新办企业发票核定及申领
  • sql解析执行顺序
  • 最新个人捐款是什么意思
  • 如何理解合并报表编制程序中的调整与抵消处理
  • 装修专票是几个点
  • 缴纳社保公积金的会计分录
  • 诉讼费可以退回私账嘛
  • 工会账户收到经费的会计科目
  • 国外工程合同类型
  • 其他业务收入冲减应付账款
  • 弱电系统可以入户门吗
  • 在sql中使用where子句指出的是
  • 用指定用户名访问网络
  • 苹果电脑优酷视频播放不了
  • 如何安装win95系统
  • windows系统中巧用系统中的文件查看有谁用过我们的电脑 查看方法介绍
  • linux怎么和window系统共用
  • 微软新品什么时候上市
  • windows xp iis安装
  • Win10控制面板在c盘哪里
  • Linux下使用httpry来嗅探HTTP流量教程
  • win8怎么设置
  • textureformat
  • 微信小程序倒计时乱跳
  • javascript中循环结构包括
  • jquery 滑块
  • Open quote is expected for attribute "name" associated with an element type "item".
  • dos替换文件命令
  • android查询数据库
  • 三消游戏在线
  • javascript教程完整版
  • htc windows
  • javascript的理解
  • python ntlk
  • 山东省税务局在哪
  • 福州税务局几点关门
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设