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.