位置: 编程技术 - 正文

浅谈node的事件机制(node解决了什么问题)

编辑:rootadmin

推荐整理分享浅谈node的事件机制(node解决了什么问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node解决了什么问题,node案例,node案例,node解决了什么问题,node的理解,node node,node node,node的事件机制,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

在nodejs的官方文档中,明确写出了node的一个特性是event-driven(事件驱动),可见其非常重要。查看源码,我们可知其事件机制为用js写的EventEmitter类,写得非常优雅且应用了发布/订阅模式。

通过实现一个简易的、具有发布/订阅模式的事件机制,以此来理清EventEmitter类的实现思路

Publish/Subscribe(发布/订阅模式)

类比

要讲的是一个模式,模式这个词,听起来就很抽象。我们先举个栗子。假设有一家报纸机构,提供晨报、午报、晚报。如果你想要看某种报纸,你需要向报纸机构订阅,等对应的报纸发布出来后,报纸机构就会通知你来拿报纸。

在这个过程中,报纸机构实现了两个功能,一是接受客户的订阅;二是发布不同类型的报纸。发布报纸的时候,订阅该类型报纸的客户就能接收到通知。

这个报纸机构也就是我们要实现的事件机制。

目的

浅谈node的事件机制(node解决了什么问题)

从上面的例子可以看出:1.发布报纸;2.将报纸给到客户;这个连续的过程由于报纸机构的存在,变成了可以先订阅,再发布,等到发布就自动送到客户手中,实现了动作时间上的分离。这也是发布/订阅系统的优势。

实现思路

我们有3种报纸,对应3个事件,每个事件发生时要通知客户。对应的数据格式可以如下:

由于每种报纸都可能有不止一个人订阅,那么格式可优化成这样:

当用户订阅的时候,我们就将其事件添加对应的数组中;当事件发布的时候,就执行相应事件。说白了就是先存储后使用。

具体代码如下:

1.on表示订阅,将事件添加到对应数组中2.emit表示发布,将对应数组中的数据取出来执行3.off表示删除无用的事件

node的EventEmitter

node的EventEmitter基本逻辑和上面提供的例子基本一样,只是更加复杂些。

1.订阅事件on

2.发布事件

讲到这里,相信大家已经明白EventEmitter的实现思路。

参考资料

node events.js

标签: node解决了什么问题

本文链接地址:https://www.jiuchutong.com/biancheng/379555.html 转载请保留说明!

上一篇:NodeJs通过async/await处理异步的方法(nodejs await)

下一篇:详解使用Typescript开发node.js项目(简单的环境配置)(typescript的type)

  • 税负怎么计算
  • 年前一个月工资年后发
  • 工资加计扣除时间怎么填
  • 换出资产为存货为什么不
  • 商贸公司运输发票怎么开
  • 免抵退税的计算数据
  • 劳动法相关法规
  • 出差车费报销申请怎么写
  • 车辆购置税免税申报如何操作
  • 公司汽车装潢和保养做什么会计科目
  • 关于非上市公司的法律
  • 资产负债表和业务活动表勾稽关系不对怎么查
  • 小微企业减免所得税
  • 联营和合营的区别共同控制
  • 未缴纳出资的股东未到期能否追加为被执行人
  • 购买机动车怎样抵扣进项税
  • 实发工资需扣除所得税吗
  • 残联备案还能补申报吗
  • 应付短期租入固定资产的租金计入什么科目
  • 分公司使用总公司业绩投标
  • macbook自动弹出页面
  • 增发股票会计科目
  • 直接人工分配按计时工资怎么分
  • picfile什么意思
  • sgbhp.exe - sgbhp是什么进程 有什么用
  • 零售企业退货分录
  • vue实现打印
  • php umask
  • 培训类产品
  • 秋分日的时间意义庆祝方式
  • PHP:JDToJulian()的用法_日历函数
  • 增值税专用发票上注明的价款含税吗
  • 年中建账年初余额怎么录入
  • 发现新大陆的是麦哲伦还是哥伦布
  • 深度解析冯德伦最后为什么选了舒淇
  • mysql分表数量取决于什么
  • 公司股权转移怎么办理
  • 收到返利冲成本还是记收入
  • 小规模纳税人升级为一般纳税人
  • pycharm折叠代码块快捷键
  • 用友软件中销售怎么做
  • 应付职工薪酬科目余额表怎么看
  • 小规模纳税人减按1%怎么计算
  • 补报印花税税需要提供什么材料
  • 公司预支款应注意什么
  • 销售货物退款会计分录
  • 退回的个税手续费如何账务处理
  • 申报系统中印花税报表怎么填
  • 记账凭证如何填写样本
  • 软件开发费属于研发和技术服务还是信息技术服务
  • 航天信息服务费不交可以吗
  • 伤残就业补偿金记入什么科目
  • 简易征收可以抵税吗
  • 成本核算方法有哪几种
  • 固定资产帐怎么做
  • 房地产企业会计处理实务
  • 判断一个表是否存在
  • Windows Server 2008域环境下组策略两例应用
  • 设置共享文件夹win10
  • mac上itunes
  • Linux系统配置要求
  • win8系统蓝屏后无法修复
  • freebsd服务器怎么样
  • Windows命令行删除文件夹
  • JavaScript中的数据类型分为两大类
  • eval()函数python
  • shell编程技巧
  • js脚本使用
  • linux命令批量执行
  • 简述android中色值原理与表示形式
  • django forloop
  • unityab包
  • node 多线程
  • javascriptz
  • python append、extend与insert的区别
  • jquery有哪些
  • python中编写程序
  • 河南商丘联通宽带最低多少钱
  • 青霉素过敏是因为提纯不好吗
  • 常设机构怎么缴纳所得税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设