Pular para o conteudo principal

Event loop

O que o event loop coordena e por que o JavaScript assíncrono costuma rodar numa ordem que surpreende.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O que e

O event loop e o mecanismo que decide quando o trabalho assíncrono enfileirado finalmente pode rodar, mas só depois que o código sincrônico atual termina.

E por isso que promises, timers e callbacks não executam no mesmo instante em que você escreve o código.

Quando importa

Ele importa quando você precisa depurar ordem estranha de execução, race condition ou aquelas perguntas classicas de entrevista sobre a saída de setTimeout e Promise.

Sem um modelo claro de pilha atual, filas e ordem de agendamento, o comportamento do JavaScript parece magia.

Erro comum

Um erro comum e decorar a frase “código assíncrono roda depois” sem entender o que esse “depois” significa.

Não significa “em outra thread paralela”. Significa “esperando a vez, até a thread principal ficar livre”.

Exemplo curto

Se você roda console.log('A'), agenda um .then() e depois roda console.log('B'), o código sincrônico termina primeiro.

Você sempre vera A, depois B, e só entao o callback da promise.

Por que ajuda

Quando você para de olhar só para a sintaxe e passa a visualizar a ordem real de execução, bug assíncrono deixa de ser chute.

Esse e o ganho real de entender event loop.

Você concluiu este artigo

Continue explorando

Artigos relacionados