Node.js开发笔记——EventEmitter
Node.js使用的是事件驱动模型。
可以通过EventEmitter
来实现事件的监听和触发,Node.js中其他的异步API也都是通过继承EventEmitter实现的。
addListener/removeListener
为指定的事件添加一个监听器,可以为同一个事件添加多个监听器。
1 | const events = require('node:events') |
on/emit
on方法和addListener是一样的,on是简写。
1 | // 监听事件,可以接受参数 |
once
可以使用once为事件添加单词监听器,监听器最多只会执行一次。
1 | ee.once('event_name', handler) |
setMaxListeners/defaultMaxListeners
EventEmitter默认限制了给同一个事件最大只能添加10个监听器,使用setMaxListeners可以指定限制数量。
1 | ee.setMaxListeners(100) |
或者可以直接设置默认最大数量:
1 | // 设置为0解除限制 |
listeners
获取指定事件上绑定的所有的监听器。
1 | const listeners = ee.listeners('event_name') |
newListener事件
EventEmitter中的特殊事件。
1 | ee.on('newListener', (event, listener) => { |
removeListener事件
EventEmitter中的特殊事件。
1 | ee.on('removeListener', (event, listener) => { |
error事件
EventEmitter中的特殊事件。
1 | ee.on('error', (arg1, arg2, ...) => { |
在实际使用时,我们一般通过自定义类继承EventEmitter来实现。