Event
来源:Node.js
EventEmitter
Node.js核心API都采用异步事件驱动架构(通过方法来监听事件状态的变化,并在变化的时候做出相应的动作)
很多Node API的底层都使用了event
1 | fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => { |
event就是经典的发布订阅设计模式
使用
1 | const EventEmitter = require('events') |
监听消息数量默认是10个
1 | const EventEmitter = require('events') |
调用setMaxListeners传入数量,可以解除这个限制
1 | event.setMaxListeners(20) |
使用once发布事件的话,即使emit派发多次也只会触发一次
1 | event.once('test', (data) => { |
使用off取消侦听
1 | const fn = (msg) => { |
process API就用到了event,源码的setupProcessObject函数中:
- 引入event模块
- 获取process的原型对象
- 将event的原型对象设给了process的原型对象
- 重新绑定上下文
- 将process挂载到globalThis,以便全局访问
评论