位置: 编程技术 - 正文

用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
  • 价税分离合同印花税的计税依据怎么算
  • 外销收入确认原则有哪些
  • 不得抵扣的进项税额转出会计分录
  • 自然人纳税人识别号查询
  • 增值税普通电子发票可以抵税吗
  • 以前年度已交增值税额
  • 金税盘发票号码确认显示不全
  • 公司购买销售材料怎么写会计分录?
  • 净现值为什么要除以它的折现率
  • 十万位发票怎么开
  • 个人开具工程款发票所得税怎么算
  • 金税三期房产税更正申报怎么弄
  • 增值税季度报税
  • 贷款已支付属于什么会计科目
  • 成本费用的结转方法
  • 企业原材料盘盈的原因分析
  • 暂估商品入库跨年收到发票怎么做账?
  • 公共基础设施折旧年限表 20
  • 企业社会贡献总结怎么写
  • 固定资产残值清零怎么处理
  • 电脑bios设置最佳性能和默认
  • 在win7中,为什么打开盘符在新窗口中出现?
  • windows10如何关闭病毒和威胁防护设置
  • 自产自销的茶叶要交增值税吗
  • 以租代购算固定资产吗
  • 企业车间承包合同的法律效力
  • 租入经营用房屋的改良支出
  • laravel自带队列效率
  • php制作验证码
  • 长期应付款核算范围有哪些
  • cmd 过滤命令
  • unmount命令详解
  • 用python绘制
  • 固定资产处置科目有哪些
  • 印花税计算公式
  • 出口商品没有发票可以入收入吗
  • 非营利组织会计就是用于确认、计量
  • java删除类
  • phpcms模板下载
  • Ubuntu自启动U盘
  • 成本核算步骤
  • 资产类备抵科目借方表示
  • 财政拨入的专项款专账怎么做
  • 库存股处理方法有哪些
  • 高新技术企业的申报条件
  • 结构性存款现金流量折现法
  • 可供出售金融资产名词解释
  • 承租人违约押金怎么办
  • 公司分期付款购车如何做账
  • 递延资产放在资产负债表哪里
  • 测试账户收入怎么处理
  • 软件开发公司账一定按项目做吗
  • 不属于投资性房地产项目有自用房地产作为存货的
  • 预缴增值税扣除额用填写吗
  • 存货盘亏的账务处理怎么做
  • sql server 将数字转换成日期
  • win7怎么打开后缀
  • 扩展卷不相邻怎么办
  • win8defender怎么打开
  • CentOS yum php mcrypt 扩展安装方法
  • win8系统怎么安装win10
  • xp系统无法正常启动怎么办
  • win10家庭版系统怎么样
  • linux设置utf8编码
  • 使用NGUI时遇到物理引擎错误
  • 动态修改ip
  • 解决在基层
  • jquery遍历数组的方法
  • js数组entries
  • JavaScript中的事件处理
  • js如何实现类的继承
  • 第二章,动态添加按钮(Android)
  • python电话本
  • 房产营业税满2年怎么算
  • 进口设备应缴纳的关税
  • 财务审计报告哪个位置可以看出是否亏损
  • 福建广电网上营业厅下载
  • 个人所得税计算扣除五险一金吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设