【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)
相关推荐
傻啦嘿哟2 分钟前
Python 操作 Word 页眉页脚完整指南
开发语言·c#
阿kun要赚马内6 分钟前
Python装饰器的原理详解
开发语言·python
kyle~7 分钟前
FANUC机械臂---R寄存器
开发语言·c++·机器人·fanuc
长沙红胖子Qt14 分钟前
Qt实用技巧:多QLabel不规则间距像素对齐文本方式实现
开发语言·qt·字符间距·动态控制
码云数智-园园14 分钟前
Go并发编程避坑指南:如何彻底消灭数据竞争(Data Race)
开发语言
程序员小寒14 分钟前
JavaScript设计模式(十):模板方法模式实现与应用
前端·javascript·设计模式·模板方法模式
Mem0rin15 分钟前
[Java/数据结构]树的基本概念、二叉树的创建和遍历
java·开发语言·数据结构
我不是懒洋洋16 分钟前
【经典题目】链表OJ(轮转数组、返回倒数第k个节点、链表的回文结构)
c语言·开发语言·数据结构·算法·链表·visual studio
We་ct18 分钟前
EventSource & WebSocket & HTTP
前端·javascript·网络·websocket·网络协议·http·面试
Lyyaoo.19 分钟前
【JAVA基础面经】CAS 与 ABA
java·开发语言