【Node.js】events

EventEmitter 像是 Vue2 的event bus,或者Vue3 的 mitt。主要采用了发布订阅模式来处理事件。

js 复制代码
const EventEmitter = require('events');

const event = new EventEmitter()
// 监听(订阅)事件
event.on('test',(data)=>{
    console.log(data)
})

event.emit('test','testtt') // 派发事件

监听的数量默认为10 个。当然我们可以自行修改event.setMaxListeners(20)。

once 方法只监听一次。off 方法停止监听。

可以发现 process 可支持这些方法,底层就是因调用了 EventEmitter 的原型对象给 process 对象。主要使用 Object.setPrototypeOf(target, source) 。

js 复制代码
const EventEmitter = require('events')
ObjectSetPrototypeOf(ObjectGetPrototypeOf(process), EventEmitter.prototype)
相关推荐
Penge6666 分钟前
《Go 后端开发者学 TypeScript:typescript 类型断言》
javascript
Penge6669 分钟前
《Go 后端开发者学 TypeScript:Symbol》
javascript
Hhy_11072 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19902 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy19902 小时前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala
三*一2 小时前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript
YSL0701242 小时前
C++基础
开发语言·c++
若亦_3 小时前
Java中关于this的三种用法
java·开发语言·intellij-idea
2601_968793143 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
FungLeo3 小时前
成为全栈·基础补充·Node.js 运行时:事件循环与异步
javascript·node.js·事件循环·后端开发·异步编程·成为全栈