O módulo de eventos do Node.js

O móduo events nos disponibiliza a classe EventEmitter, que é essencial para trabalhar com eventos no Node.js.

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

O event listener usa esses eventos:

  • newListener quando um listener é adicionado
  • removeListener quando um listener é removido

Aqui detamos uma descrição detalhade dos métodos mais usados:

emitter.addListener()

Alias para emitter.on().

emitter.emit()

Emite um evento. Chama sincronamente todo event listener na ordem em que foram registrados.

door.emit("slam") // emitindo o evento "slam"

emitter.eventNames()

Retorna um array de string que representa os eventos regstrados no objeto EventEmitter atual:

door.eventNames()

emitter.getMaxListeners()

Obtêm a quantidade máxima de listeners que podem ser adicionados em um objeto EventEmitter, que por padrão é 10 mas pode ser aumentado ou diminuido utilizando setMaxListeners()

door.getMaxListeners()

emitter.listenerCount()

Obtêm a contagem total de listeners do evento passado como parâmetro:

door.listenerCount('open')

emitter.listeners()

Obtêm um array de listeners do evento passado como parâmetro:

door.listeners('open')

emitter.off()

Alias para emitter.removeListener() adicionado no Node.js 10

emitter.on()

Adiciona uma função callback que é chamada quando um evento é emitido.

Uso:

door.on('open', () => {
console.log('Door was opened')
})

emitter.once()

Adiciona uma função callback que será chamada quando um evento for emitido pela primeira vez depois de registrado. Essa callback só será chamada uma vez.

const EventEmitter = require('events')
const ee = new EventEmitter()
ee.once('my-event', () => {
// chama a função callback uma vez
})

emitter.prependListener()

Quando você adiciona um listener usando on ou addListener, ele é adicionado no fim da fila de listener, e chamado por último. Usando preprendListener ele será adicionado, e chamado, antes dos outros listeners.

emitter.prependOnceListener()

Quando você adiciona um listener usando once, ele é adicionado na fila de listeners, e chamado por último. Usando prependOnceListener ele é adicionado, e chamado, antes dos outros listeners.

emitter.removeAllListeners()

Remove todos os listeners de um objeto EventEmitter escutando um eveneto em específico:

door.removeAllListeners('open')

emitter.removeListener()

Remove um listener em específico. Você pode fazer isso salvando a função callback em uma variável, quando adicionada, ela pode ser referenciada mais tarde:

const doSomething = () => {}
door.on('open', doSomething)
door.removeListener('open', doSomething)

emitter.setMaxListeners()

Define a quantidade máxima de listeners que podem ser adicionados em um objeto EventEmitter, que por padrão é 10 mas pode ser aumentado ou diminuido.

door.setMaxListeners(50)