devterview_$ iniciar simulação

Ordem de execução: síncrono, microtask e macrotask

MédioJúniorFundamentos

Pergunta

Qual a ordem de execução entre código síncrono, uma Promise (microtask) e um setTimeout (macrotask) no JavaScript?

Resposta esperada

Todo código síncrono roda primeiro, até a call stack esvaziar. Depois, o event loop drena completamente a fila de microtasks (Promises, queueMicrotask) antes de processar a próxima macrotask. Só então uma macrotask (setTimeout, setInterval, I/O) é executada — e depois dela, a fila de microtasks é drenada de novo antes da macrotask seguinte. Por isso um `Promise.resolve().then(...)` sempre roda antes de um `setTimeout(fn, 0)`, mesmo com delay zero.

Por que perguntam isso

Pergunta clássica que revela se o candidato já debugou uma race condition real envolvendo Promises e timers, ou só decorou 'Promise roda antes'.

#javascript#event-loop
publicidade

Relacionadas