Visualizador do Event Loop do Node.js

Uma trilha de aprendizado com 7 lições e animação passo a passo. Veja a call stack, a fila de nextTick, as microtasks e as fases do libuv se movendo em tempo real e preveja a saída do console antes de dar play.

Lição 1 de 7 · Iniciante

A call stack

Entenda como o código síncrono executa, um frame por vez.

Código
1function third() { console.log('third') }
2function second() { third() }
3function first() { second() }
4console.log('start')
5first()
6console.log('end')

Preveja a saída

O que o console vai imprimir, em ordem?

Call stack

executa JS
  • main()

Fila nextTick

1ª prioridade
  • vazia

Microtasks

promises
  • vazia

Event loop (libuv)

t = 0ms

Timers

setTimeout
  • vazia

Poll (I/O)

fs, net
  • vazia

Check

setImmediate
  • vazia

As fases pending, idle/prepare e close são internas e não são animadas.

Console
nada impresso ainda
O script começa. main() entra na call stack.
1/12

O JavaScript roda em uma única thread com uma única call stack. Chamar uma função empilha um frame, retornar desempilha, e a última função chamada é a primeira a terminar (LIFO). Nada mais executa até a stack esvaziar.

Como Usar

01

Escolha uma lição na trilha de aprendizado. Elas vão da call stack até um desafio final com todas as filas.

02

Leia o código e preveja a saída do console escolhendo uma das opções.

03

Clique em Play, ou avance um quadro por vez, e veja os itens se moverem entre as filas.

04

Leia a narração abaixo do palco. Ela explica cada movimento do event loop.

05

Conclua as sete lições e teste-se com o simulado de entrevista Node.js Fundamentals.

O Que É Esta Ferramenta?

O event loop do Node.js é o agendador por trás de todo callback, promise e timer do seu servidor. Este visualizador o transforma em uma trilha guiada: sete lições curtas, cada uma com código real, call stack animada, filas de nextTick e microtasks e as fases do libuv (timers, poll, check), para você ver por que o console imprime na ordem que imprime.

Por Que Isso Importa?

A ordem do event loop é um dos temas mais cobrados em entrevistas de Node.js e a causa de muitos bugs em produção: timers atrasados, logs em ordem inesperada e requisições travadas. Entendê-la torna o código assíncrono previsível.

As quatro coisas para lembrar

1) O código síncrono sempre termina primeiro. 2) process.nextTick roda antes das promises. 3) As microtasks são esvaziadas por completo entre cada callback. 4) O loop visita timers, depois poll, depois check, nessa ordem.

Para quem é?

Para quem está aprendendo Node.js, desenvolvedores frontend migrando para o backend e quem se prepara para entrevistas técnicas. Não precisa instalar nada: tudo roda no navegador.

Dica de Desenvolvimento
Preveja primeiro, assista depois. Chutar a saída antes de dar play constrói o modelo mental muito mais rápido do que apenas assistir.

Perguntas Frequentes