Analise o trecho de código a seguir escrito em NodeJS: O que...

Próximas questões
Com base no mesmo assunto
Q827333 Programação

Analise o trecho de código a seguir escrito em NodeJS:

Imagem associada para resolução da questão

O que será mostrado no console JavaScript do navegador após a execução desse trecho de código é:

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Prezados,

O emitter.once vai criar um listener que vai funcionar apenas uma vez. Da próxima vez que ele disparar a trigger, o listener será removido e invocado novamente.

Portanto, a primeira impressão de m será 1, e a segunda será 0.

Fonte: https://nodejs.org/api/events.html#events_emitter_once_eventname_listener 

Portanto a alternativa correta é a letra A

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Alquém sabe me explicar pq ?

Pelo que entendi, o evento só é executado uma vez por causa do uso do método once no trecho
"emitter.once('event', (data) => {
     console.log(++m + ":" + data)
})"

Com isso, somente a primeira chamada emitter.emit é executada, a segunda é ignorada. Então, como a variável m é inicializada com zero e também passada por parâmetro nesta chamada ("data"), no momento em que ocorre a primeira chamada emitter.emit internamente ao once o valor da variável m incrementa uma vez e concatena com seu valor passado por parâmetro, que era o valor original (zero). Assim, resulta 1:0.

Segue o link da documentação do NodeJS que trata sobre isto:
https://nodejs.org/api/events.html#events_handling_events_only_once

✅Gabarito(A) 

emitter.once():

Essa callback só será chamada uma vez.

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

Sintaxe

const EventEmitter = require('events')

const emitter= new EventEmitter()

emitter.once('my-event', () => {

  // chama a função callback uma vez

})

Fonte: https://nodejs.reativa.dev/0049-node-module-events/index

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo