Entendendo process.nextTick()
Uma parte importante do event loop é o process.nextTick()
.
Toda vez que o event loop termina um ciclo, nós chamamos isso de tick.
Quando nós passamos uma função pro process.nextTick()
, nós instruimos a engine a invocar essa função no fim da operação atual, antes que o próximo tick do event loop tenha início.
process.nextTick(() => {//faça algo})
O event loop está ocupando processando o código da função atual.
Quando a operação finaliza, a engine JS executa todas as funções passadas por chamadas do nextTick
durante aquela operação.
Esse é o jeito que nós podemos dizer à engine JS para processar uma função assíncronamente (depois da função atual), mas o mais breve possível, sem enfileirar.
Chamando setTimeout(() => {}, 0)
vai executar a função no fim do próximo tick, muito mais tarde do que quando usando nextTick()
, que prioriza a chamada e a executa antes do próximo tick.
Use nextTick()
quando você quer garantir que na próxima iteração do event loop o código já tenha sido executado.