feng xiaohan

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 等。