O event loop coordena quando callbacks de trabalho assíncrono podem ser executados. JavaScript executa cada trecho síncrono até o fim; depois, o ambiente hospedeiro — como o navegador ou o Node.js — decide qual trabalho enfileirado vem a seguir. Para começar a estudar, entenda primeiro a pilha de chamadas e a execução até a conclusão; depois, aprenda como tarefas e microtarefas funcionam no navegador e como as fases do Node.js diferem.
Como JavaScript executa o código
JavaScript executa trabalho em uma pilha de chamadas. Quando uma função é chamada, ela entra na pilha; quando termina, sai. O código de um job é processado até concluir antes que outro job comece. Esse princípio, chamado execução até a conclusão (run-to-completion), torna mais fácil acompanhar alterações de estado: outro job JavaScript não interrompe o trecho que está rodando.
As an Amazon Associate I earn from qualifying purchases.
Isso não significa que uma operação assíncrona terminou só porque foi iniciada. O ambiente hospedeiro pode cuidar de um timer, uma operação de I/O ou um evento enquanto a pilha JavaScript está ocupada. Quando houver trabalho a executar, o ambiente agenda um callback; o JavaScript só o processa quando puder. A visão geral do modelo de execução do JavaScript da MDN apresenta os conceitos de agente, pilha e jobs.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallO que acontece quando você agenda um timer
Um timer não interrompe o código síncrono em andamento. O ambiente agenda o callback para execução posterior, e o event loop permite que ele seja processado quando as condições do host permitirem. Portanto, setTimeout(fn, 0) não quer dizer “execute agora”: zero não elimina o trecho síncrono atual nem garante execução imediata.
#1 Best Overall
Uma forma útil de raciocinar é separar três momentos: o código solicita uma operação; o host aguarda ou acompanha o evento pertinente; e o callback passa a ser trabalho que o ambiente poderá executar depois. Os detalhes de agendamento dependem do host, então não se deve presumir uma única fila universal que funcione da mesma forma em todo JavaScript.
Tarefas, microtarefas e Promises no navegador
No modelo de navegador documentado pela MDN, tarefas podem vir de fontes como eventos e temporizadores, enquanto callbacks de Promise são tratados como microtarefas. Quando a pilha fica vazia, o navegador drena as microtarefas antes de avançar para a próxima tarefa. Uma microtarefa pode agendar outra; nesse caso, a drenagem continua e pode atrasar o processamento de tarefas subsequentes.
Rank #2
Às vezes, materiais informais chamam tarefas de “macrotarefas”. A especificação HTML usa os termos “task” e “microtask”; convém manter essa distinção em mente, porque as regras detalhadas variam conforme o ambiente. A guia de microtarefas da MDN explica a relação entre microtarefas, tarefas e o comportamento no navegador.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Navegador e Node.js não têm o mesmo modelo de agendamento
O princípio geral — o código síncrono precisa liberar a execução antes que outro callback JavaScript rode — ajuda nos dois ambientes. Mas as fontes de trabalho e as regras específicas são diferentes:
| Aspecto | Navegador | Node.js |
|---|---|---|
| Fontes de trabalho | APIs da plataforma web, eventos e temporizadores; o navegador também coordena trabalho relacionado à renderização. | I/O e APIs fornecidas pelo Node.js, além de timers e outros callbacks do ambiente. |
| Modelo descrito | O modelo HTML distingue tarefas e microtarefas; Promises usam microtarefas. | O event loop é organizado em fases, incluindo poll e check, além de timers. |
| Consideração de versão | As regras citadas aqui são as do modelo de navegador descrito pela MDN. | No Node.js 20, que usa libuv 1.45.0, os timers passaram a ser executados depois da fase poll em cada iteração do loop; a ordem pode depender da versão e do contexto. |
A documentação oficial do Node.js Learn resume o papel do mecanismo assim: “The event loop is what allows Node.js to perform non-blocking I/O operations — despite the fact that a single JavaScript thread is used by default — by offloading operations to the system kernel whenever possible.” Em outras palavras, o Node.js pode delegar certas operações de I/O ao kernel e continuar executando JavaScript quando houver trabalho disponível; isso não torna automaticamente paralelo o código JavaScript que consome CPU. Consulte o guia oficial do event loop, timers e nextTick do Node.js para as fases e as ressalvas de versão.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Por que trabalho síncrono longo causa atrasos
Se um trecho síncrono demora muito, a pilha permanece ocupada e outros callbacks JavaScript aguardam. No Node.js, isso pode atrasar callbacks e aumentar a espera de clientes enquanto o loop passa tempo excessivo nesse trecho. O event loop organiza a execução; não transforma código CPU-bound em trabalho paralelo. A documentação do Node.js aborda esse efeito em Don’t block the event loop.
Quick Recap
Best Value
Rank #4
Um roteiro para começar a estudar
- Comece pelo modelo de execução. Leia sobre agentes, pilha de chamadas, jobs e run-to-completion na MDN.
- Estude o navegador separadamente. Acompanhe como a MDN explica microtarefas, Promises, eventos e temporizadores.
- Se seu foco for Node.js, aprenda as fases do loop. Leia o guia do Node.js e confira exemplos na versão que você realmente usa, especialmente ao comparar timers com outras fases.
- Por fim, investigue o bloqueio do loop. Use a explicação do Node.js sobre trabalho síncrono que impede o loop de avançar para relacionar execução longa a atrasos de callbacks e latência.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




