À medida que você tenta entender o event loop do Node.js, uma parte importante dele é process.nextTick()
.
Toda vez que o event loop faz uma viagem completa, chamamos de tick.
Quando passamos uma função para o process.nextTick()
, instruímos a engine a invocar essa função no final da operação atual, antes que o próximo ciclo de eventos comece:
process.nextTick(() => {
// faz alguma coisa
})
O event loop está ocupado processando o código de função atual.
Quando essa operação termina, a engine do JS executa todas as funções passadas para as chamadas nextTick()
durante essa operação.
É a maneira como podemos dizer a engine do JS para processar uma função de forma assíncrona (após a função atual), mas o mais rápido possível, não a enfileirando.
Chamar setTimeout(() => 0)
executará a função no final do próximo tick, muito mais tarde do que ao usar nextTick()
, que prioriza a chamada e a executa logo antes do ínicio do próximo tick.
Use nextTick()
quando quiser ter certeza de que na próxima iteração do event loop esse código já foi executado.