Node.js的事件模块提供了EventEmitter类
events 模块为我们提供了EventEmitter类,它是在Node中处理事件的关键。
我发表了一篇完整的文章,所以在这里我将只描述API,而不进一步举例说明如何使用它。
const EventEmitter = require('events')
const door = new EventEmitter()
事件监听器吃着自己的狗粮,使用这些事件。
newListener当一个监听器被添加时removeListener当一个监听器被移除时
下面是对最有用的方法的详细描述。
emitter.addListener()emitter.emit()emitter.eventNames()emitter.getMaxListeners()emitter.listenerCount()emitter.listeners()emitter.off()emitter.on()emitter.once()emitter.prependListener()emitter.prependOnceListener()emitter.removeAllListeners()emitter.removeListener()emitter.setMaxListeners()
emitter.addListener()
emitter.on() 的别名。
emitter.emit()
发出一个事件。它按注册的顺序同步调用每个事件监听器。
emitter.eventNames()
返回一个字符串数组,代表在当前EventListener上注册的事件。
emitter.getMaxListeners()
获取可以添加到EventListener对象中的最大监听器数量,默认为10个,但可以通过以下方式增加或减少setMaxListeners()
emitter.listenerCount()
获取作为参数传递的事件的监听者数量。
door.listenerCount('open')
emitter.listeners()
获取作为参数传递的事件的听众数组。
emitter.off()
emitter.removeListener() 在Node 10中添加的别名
emitter.on()
添加一个回调函数,当一个事件被发出时被调用。
使用方法。
door.on('open', () => {
console.log('Door was opened')
})
emitter.once()
添加一个回调函数,在注册后第一次发出事件时被调用。这个回调函数只会被调用一次,不会再被调用。
const EventEmitter = require('events')
const ee = new EventEmitter()
ee.once('my-event', () => {
//call callback function once
})
emitter.prependListener()
当你使用on 或addListener 添加一个监听器时,它在监听器队列中被最后添加,并被最后调用。使用prependListener ,它将在其他监听器之前被添加和调用。
emitter.prependOnceListener()
当你使用once 添加一个监听器时,它在监听器队列中最后被添加,并且最后被调用。使用prependOnceListener ,它被添加,并在其他监听器之前被调用。
emitter.removeAllListeners()
删除一个事件发射器对象的所有监听器,监听一个特定的事件。
door.removeAllListeners('open')
emitter.removeListener()
删除一个特定的监听器。你可以在添加时将回调函数保存到一个变量中,这样你以后就可以引用它。
const doSomething = () => {}
door.on('open', doSomething)
door.removeListener('open', doSomething)
emitter.setMaxListeners()
设置一个人可以添加到EventListener对象的最大监听器数量,默认为10,但可以增加或减少。