Node.js的节点事件模块介绍

122 阅读2分钟

Node.js的事件模块提供了EventEmitter类

events 模块为我们提供了EventEmitter类,它是在Node中处理事件的关键。

我发表了一篇完整的文章,所以在这里我将只描述API,而不进一步举例说明如何使用它。

const EventEmitter = require('events')
const door = new EventEmitter()

事件监听器吃着自己的狗粮,使用这些事件。

  • newListener 当一个监听器被添加时
  • removeListener 当一个监听器被移除时

下面是对最有用的方法的详细描述。

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()

当你使用onaddListener 添加一个监听器时,它在监听器队列中被最后添加,并被最后调用。使用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,但可以增加或减少。