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 é adicionadoremoveListener
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)