位置: 编程技术 - 正文

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

  • 保险公司报销修手机
  • 收据大写十万元整怎么写标准
  • 补缴房产税有滞纳金吗
  • 怎么查企业适用哪个会计制度教学视频
  • 审计调整分录做在哪一年
  • 公司收到红字发票怎么开
  • 还有预算外资金的说法吗
  • 小规模纳税人购入货物收到增值税专用发票
  • 企业为职工社保补缴怎么办理
  • 文化建设事业费逾期申报有罚款吗
  • 年底增值税专用发票入帐不勾选抵扣帐务处理
  • 保安公司开具的发票
  • 企业购买理财产品收益会计分录
  • 公司帮别人代缴社保
  • 非上市公司股权转让
  • 公司没有进出口权 如何进行业务
  • 留抵税额怎么入账
  • 补贴收入营业外收入比例过高
  • 专项应付款怎么记账
  • 支付税点是什么意思
  • 进口货物如何缴增值税
  • 计提本月城市维护建设税,教育费附加500元
  • u盘启动器安装系统
  • 电脑桌面刷新反应迟钝
  • windows11启动卡在转圈圈
  • 企业所得税怎么做帐
  • linux用在哪些方面
  • 无法启用网络发展
  • 代垫运费的会计处理
  • regsync.exe - regsync是什么进程 有什么用
  • php-cgi
  • 跨平台桌面程序
  • PHP:pcntl_wtermsig()的用法_PCNTL函数
  • php实现图片上传的方法
  • thinkphp ide
  • 发票收款人和复核人,开票人没填影响报销吗
  • win11永久关闭桌面弹出广告
  • php递归函数桃子一天吃一半
  • 固定成本又称什么成本
  • 员工工资费用
  • 拖欠工程款利息的司法解释
  • 劳务报酬什么情况下可以退税
  • 织梦怎么采集文章
  • python chess库
  • 商品流通企业的含义
  • 费用减少利润减少的情况
  • 工程结算属于哪类账户
  • 投资性房地产累计摊销
  • 水电费的收据单怎么写
  • 机动车经销企业开具机动车发票
  • 广告费应该计入办公费还是印刷费
  • 支付土地租金计入什么科目里面
  • 商业承兑汇票怎么做账
  • 薪金的定义
  • 签合同付款
  • 给职工发放的米面油记入什么
  • 收到银联商务客户短信
  • 收到技术服务费计入什么科目
  • 公司成本核算流程
  • SQL Server Parameter Sniffing及其改进方法
  • mysql连接是什么协议
  • 如何关闭windows程序
  • ubuntu包管理命令
  • mac购买建议
  • linux进程运行的两种方式
  • centos禁止ip访问
  • linux page buffer cache深入理解
  • 360修复win7
  • linux系统的配置
  • unity开发游戏教程
  • perl中my
  • shell批量处理文件
  • node-red 全局变量
  • nodejs使用场景
  • unity3d跨平台
  • javascript Window及document对象详细整理
  • 如何在android studio中导入其他包
  • jquery iframe
  • 职工教育经费可以结转吗
  • 增值税发票如何红冲
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设