位置: 编程技术 - 正文

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

  • 免征增值税的项目如何开发票
  • 个纳税人申报
  • 养猪场死猪处理方法
  • 个人话费发票怎么入账
  • 三代手续费怎么申请返还
  • 税控盘服务商
  • 子公司分红款没收到,宣告分红可以免税吗
  • 上级拨入资金借方表示什么
  • 现金流量科目怎么选择
  • 个体户认定一般纳税人
  • 没有借贷资质的公司对外放款
  • 房产公司收到的增值税
  • 提取公积金收费比例
  • 资产负债率计算方式
  • 短期借款的会计凭证
  • 营改增对金融服务业税负的影响
  • 预缴0.2%企业所得税计算方法
  • 税务局锁了开票系统票已领出还可以开出来吗
  • 缴纳滞纳金计入什么科目
  • 完税凭证号是几位数
  • 税务局手续费返还
  • 付给银行的手续费分录
  • 鸿蒙3.0内测申请成功显示名额已满
  • ecshop有哪些bug
  • 部shu
  • 政府性基金收入是政府非税收入吗
  • php字符串赋值
  • 银行存款日记账与银行对账单之间的核对属于
  • 360路由器怎么连接网络
  • 税控盘维护费全额抵扣分录怎么做
  • 赠送客户商品分录
  • 全局函数使用
  • ai生成图形
  • 个人咨询费发票是增值税
  • 小程序开发公司十大排名
  • 对公取款
  • 对公账号里面的钱会扣税吗
  • 个税手续费返还要交企业所得税吗
  • 新办商贸企业是国企吗
  • 房产原值是含税还是不含税
  • 企业利润怎么提取出来
  • 租赁公司租赁物计入什么会计科目
  • 本月开发票下月收款
  • 销项税进项税月末怎么处理
  • 其他应付款货方余额表示什么
  • 股东多缴投资款处理
  • 已付款未收到货怎么办
  • 员工休产假不发工资违法吗
  • 没有按时对账
  • 银行日记账记错了怎么办
  • 买二手设备需要签合同吗
  • 服务咨询类合同
  • 开出去的发票
  • 收到专票可以不签字吗
  • 哪个行业的会计最难
  • sql server入门新手教程
  • sql实用教程
  • Windows10安装包下载
  • Windows Server 2008:手足之争下的赢家
  • windows磁盘如何分区
  • win7 系统设置
  • ubuntu14.04升级
  • WinCinemaMgr.exe - WinCinemaMgr是什么进程
  • os x 10.10.5
  • linux查看硬件信息的命令
  • centos划分分区
  • androidtime
  • jQuery展示表格点击变色、全选、删除
  • table标签怎么设置宽高
  • jquery validate表单校验html
  • mongoose教程
  • unity人物面板
  • unity ugui教程
  • 税控盘时钟异常怎么办
  • 广东省退休公务员死亡抚恤金和丧葬费标准
  • 股权转让所得怎么申报
  • 地方税务局发票管理所
  • 重庆税务登录
  • 预付建造固定资产的工程价款
  • 伴生矿和伴采矿的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设