位置: 编程技术 - 正文

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

  • 提足折旧是指
  • 一般纳税企业所得税税率是多少2019
  • 记账凭证核算形式需要设置的凭证有
  • 资产负债表库存为负数怎么调整
  • 附加税减征额怎么做分录
  • 代扣代缴个税对企业所得税的影响
  • 物业公司哪些费用需要公示
  • 酒店里的水电费怎么收
  • 工程节点奖金
  • 抹掉的零头怎么入账
  • 一般纳税人企业所得税政策最新2023税率
  • 企业给员工发放最低生活保障
  • 公司开出的经济补偿金可以税前扣除吗
  • 公司使用个人车辆费用是多少
  • 纳税人是非开业户是什么意思
  • 企业所得税一般是几个点
  • 财务审核火车票真伪辨别
  • 企业无偿借款要缴税吗
  • 教育预收费
  • 电脑怎么搜索文档
  • 个人所得税计算方法及抵扣方法
  • 考试资格的工作有哪些
  • windows7中
  • 给供应商垫付运费合法吗
  • 增值税税控系统折旧
  • 生产企业出口退税的计算方法
  • php二分查找算法两种方法
  • vue编写网页
  • mds是什么进程
  • csinsmnt.exe进程的作用介绍 csinsmnt是什么进程
  • 旧货回收增值税率是多少
  • 个人所得税累计扣除是什么意思
  • 甲方如何规避合同责任
  • 先发货再开票
  • thinkphp6框架源码完整版下载
  • 商业银行贷款业务按担保形式分,可分为( )
  • 弥补以前年度亏损最多几年
  • reactjs.org
  • 工资和五险一金在公司发,个税在子公司扣
  • 递延收益核算哪些内容
  • 自定义转账计算所得税费用
  • 一般纳税人销售自己使用过的汽车
  • 小规模申报表填写
  • 借款可以抵扣企业所得税
  • 哪些项目可以计提汇兑损益
  • 价内税与价外税的计算公式
  • 端午节发放的现金福利会计处理
  • 一般纳税人证明在哪里开具
  • 工程款的税费怎么计算
  • 供应链公司的骗局招司机是真的吗
  • 在建工程的会计代码
  • 未实现融资收益借贷方向
  • 加油吃饭开的发票抵什么税
  • 普通发票怎么开?
  • ie11怎么打开ie8
  • 服务器centos版本选择
  • agentctl.dll
  • macos 备份
  • win7系统怎么禁用数字签名
  • win10 window
  • windows8触屏功能
  • win8无法安装inter显卡驱动
  • macbook xcode
  • js的上传文件
  • redis开机自动启动linux
  • opengl learn
  • JavaScript cookie 跨域访问之广告推广
  • shell提示
  • 正则批量匹配
  • javascript的介绍
  • jQuery.ajax 跨域请求webapi设置headers的解决方案
  • javascript闭包的作用
  • python数组定义方法
  • 22号天蝎座的运势
  • ukey证书初始密码
  • oppo纳税额
  • 合格的税务人
  • 甘肃省国家税务局电子税务局
  • 云南省地方税务局公告2011年第6号
  • 税票电话号码变更影响抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设