event
Nodejs 核心 API,常用于异步事件驱动。采用发布订阅模式。
发布订阅模式:_当有新的消息时,发布者会将其发布到一个调度中心,而调度中心会将这个消息发送给所有订阅这个消息的订阅者_。
使用
用法跟大多数 emit/on 差不多。(event bus、mitt 等)
const eventEmitter = require("events");
const bus = new eventEmitter();
// 事件默认只能监听(on) 10 个,但是可以手动设置
bus.setMaxListeners(20);
console.log(bus.getMaxListeners();)
const fn = (name) => {
console.log(name);
};
// 订阅一个事件
bus.on("test", fn);
// 只触发一次
bus.once("test", fn);
// 取消订阅(需传入相同的函数 fn)
bus.off("test", fn);
// 发布一个事件
bus.emit("test", "fxh");
应用
process
在 node 初始化的时候调用了 setupProcessObject(),这个函数内部会读取 process 原型对象(getPrototypeOf),然后将 eventEmitter 的原型嫁接到这个原型对象上(setPrototypeOf),所以 process 也可以使用 on、emit 等。