events 模块为提供了 EventEmitter 类,这是在 Node.js 中处理事件的关键。
const EventEmitter = require('events')
const door = new EventEmitter()
事件监听器返回及使用以下事件:
- 当监听器被添加时返回
newListener
。 - 当监听器被移除时返回
removeListener
。
以下是最常用的方法的详细说明:
emitter.addListener()
emitter.on() 的别名。
emitter.emit()
触发事件。 按照事件被注册的顺序同步地调用每个事件监听器。
door.emit("slam") // 触发 "slam" 事件。
emitter.eventNames()
返回字符串(表示在当前 EventEmitter 对象上注册的事件)数组:
door.eventNames()
emitter.getMaxListeners()
获取可以添加到 EventEmitter 对象的监听器的最大数量(默认为 10,但可以使用 setMaxListeners() 进行增加或减少)。
door.getMaxListeners()
emitter.listenerCount()
获取作为参数传入的事件监听器的计数:
door.listenerCount('open')
emitter.listeners()
获取作为参数传入的事件监听器的数组:
door.listeners('open')
emitter.off()
emitter.removeListener() 的别名,新增于 Node.js 10。
emitter.on()
添加当事件被触发时调用的回调函数。
用法:
door.on('open', () => {
console.log('打开')
})
emitter.once()
添加当事件在注册之后首次被触发时调用的回调函数。 该回调只会被调用一次,不会再被调用。
const EventEmitter = require('events')
const ee = new EventEmitter()
ee.once('my-event', () => {
//只调用一次回调函数。
})
emitter.prependListener()
当使用 on 或 addListener 添加监听器时,监听器会被添加到监听器队列中的最后一个,并且最后一个被调用。 使用 prependListener 则可以在其他监听器之前添加并调用。
emitter.prependOnceListener()
当使用 once 添加监听器时,监听器会被添加到监听器队列中的最后一个,并且最后一个被调用。 使用 prependOnceListener 则可以在其他监听器之前添加并调用。
emitter.removeAllListeners()
移除 EventEmitter 对象的所有监听特定事件的监听器:
door.removeAllListeners('open')
emitter.removeListener()
移除特定的监听器。 可以通过将回调函数保存到变量中(当添加时),以便以后可以引用它:
const doSomething = () => {}
door.on('open', doSomething)
door.removeListener('open', doSomething)
emitter.setMaxListeners()
设置可以添加到 EventEmitter 对象的监听器的最大数量(默认为 10,但可以增加或减少)。
door.setMaxListeners(50)
文章来源 node中文官方 http://nodejs.cn/
更多知识点 请关注:笔墨是小舟