位置: 编程技术 - 正文

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

  • 退的个税手续费怎么做会计分录
  • 印花税的纳税人是买方还是卖方
  • 房租租赁房产税由哪方缴纳
  • 用友 项目核算
  • 捐赠支出需要什么手续
  • 个税隔一个月没申报这个月可以补上吗
  • 百旺税盘网络连接不上
  • 有形资产净值是指
  • 承包费会计处理
  • 如果当月有未记账的凭证,系统不可以结账
  • 业务员出差借款,用途写什么
  • 全资子公司向母公司划转资产 土地增值税
  • 税务与审计调整结果不一致该如何调整?
  • 一次性发20万元个税如何算
  • 淘宝企业店铺是工厂直销吗
  • 企业拥有房产每年如何交税
  • 房地产开发企业应交税费科目
  • 招聘时开具的专用发票可以抵扣吗?
  • 保险公司联合举办活动
  • 居民企业之间以非货币资产进行投资
  • 从农民手里收的钱叫什么
  • 劳务报酬交的税汇算清缴能退
  • 成本费用总额包括所得税费用吗
  • ca证书延期不了
  • 运输费用入成本还是销售费用
  • 应用商店获取无反应
  • 局域网游戏电脑
  • mac电脑色彩设置
  • 微星主板bios更新黑屏
  • 日记账登记错了怎么办
  • 未开票的销售收入分录
  • cesium加载s3m
  • 装修房子监理
  • 工会经费两种拨缴方式
  • 固定资产折旧怎么做账务处理
  • thinkphp设置伪静态
  • 合伙企业的股息红利要交税吗
  • 个体户怎么开发票免税
  • php 遍历字符串
  • 季报弥补亏损,财报怎么填
  • 自建的不动产
  • 零税率和免税的含义和区别
  • 使用Go http重试请求
  • 分公司开票总公司付款可以吗
  • 劳务分包的形式有哪些
  • 金蝶软件资产负债表怎么生成
  • 冲红怎么做会计科目
  • 免费学电脑的网站
  • 资产报废的原因及情况说明
  • 个人重组债务怎么交税
  • 资本性支出与资本性支出(基本建设)的区别
  • 什么发票可以抵扣增值税吗
  • 调减加计抵减额什么意思
  • mysql开启远程访问权限
  • 金税四期对建筑行业有什么影
  • 销项税和进项税计算公式
  • 年末结转步骤
  • 预计产品质量保证损失计入什么
  • 零售商品储存的核算包括[ ]
  • mybatis collection 多条件查询的实现方法
  • win10无法新建文件夹怎么办?(已解决)
  • winxp家庭版和专业版的区别
  • 如何调整心态和正确处理情绪
  • linux chkdsk
  • win7 64位系统无法清空回收站的故障原因及解决方法
  • neotrace.exe - neotrace是什么进程 有什么用
  • wp8.1升级10
  • Android 摄像头预览卡顿
  • arp如何绑定
  • Node.js中的全局对象有
  • 批处理改ipv4地址
  • jquery渐变效果
  • python写汉字代码
  • python数字类型及操作
  • 原生javascript
  • 信用社股金分红时间
  • 江西省电子信息职业学院
  • 莅临指导和莅临交流的区别
  • 养鱼业免增值税吗
  • 环保税2018年开征文件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设