位置: 编程技术 - 正文

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

  • 向境外企业支付利息代扣代缴
  • 进项税额怎么计算例题
  • 委托加工业务中,委托方是纳税义务人
  • 建筑公司预收了款项已经开了增值税发票怎么做账
  • 个体户开电子发票需要交税吗
  • 租车开发票属于什么类
  • 出口结汇必须要开票吗
  • 报表没有其他收入怎么办
  • 应收票据背书转让分录
  • 中介费要求开发票中介公司不开
  • 企业清算的资产包括
  • 现在会计账簿还需要交印花税吗
  • 短期借款的主要形式
  • 事业基金转入哪个科目
  • 委托加工什么时候代收代缴消费税
  • 项目上发生伙食问题
  • 印花税一定要贴花吗
  • 核定征收的对象
  • 应交税费借方余额怎么处理
  • 蓝字发票是什么
  • 定额手撕发票怎么买
  • 主营业务收入多计跨年调整
  • 应付账款暂估借方余额怎么处理
  • 收回已核销的坏账并入账
  • 什么是汇兑损益,汇兑损益产生的原因有哪些?(10分)
  • win7ie图标删除了怎么恢复
  • 以太网默认网关怎么查看
  • 瑞芯微 8nm
  • 完工产品成本怎么分配
  • 对外支付企业所得税计税依据
  • 年终结算啥意思
  • 涨点是什么意思
  • linux编译安装php扩展命令
  • 工程施工会计做账流程及会计分录
  • 小微企业怎么给员工交保险
  • 2021年前端还火吗
  • 代发工资的会计科目
  • 帝国cms怎么用
  • 理财产品的分红和收益是分开的吗
  • php判断是否为整数
  • 个税申报和社保申报的金额要一致吗
  • 公司购买手机的发票
  • sql优化常用的15种方法
  • 展会补贴需要准备什么资料
  • 商业企业会计如何记账
  • 六税两费减半征收政策2023
  • ip地址跳转域名
  • sql server数据库异地备份
  • mysql数据库的设计与实现
  • 十个提高情商的方法
  • 税控盘维护费全额抵扣分录
  • 哪些属于费用发票类型
  • 现行印花税税率是多少
  • 确认销售收入时不影响应收账款入账金额的是
  • 跨年租金如何处理
  • 贷款损失准备的会计核算
  • 需要分摊的费用怎么做账
  • 购入商品货款尚未支付
  • 实收资本小于注册资本账务处理
  • 企业进行短期投资的目的包括
  • 写出linux安装的详细步骤
  • solaris配置ip地址
  • windows有哪些好用的软件
  • centos作用
  • win10更新后电脑黑屏
  • unity lightmap uv
  • perl keys
  • perl do
  • vue只适合做单页项目吗
  • 批处理提取文件夹中的文件
  • 网页编辑器手机版
  • jquery动态
  • android高级开发实战------ui、ndk与安全
  • 如何下载个人所得税A表
  • 支付宝怎么样开通刷脸支付
  • 山东济南税务局投诉电话
  • 地税局网站查询发票
  • weverse登录不了
  • 地税局上班时间是几点
  • 预缴税款怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设