HardEvent Loop & Promises💻 Output Question

Nested setTimeout creates new macrotask

💡

Hint

A setTimeout inside a setTimeout callback schedules a new macrotask — runs in a future event loop iteration.

What does this output?

setTimeout(() => {
  console.log('outer');
  setTimeout(() => console.log('inner'), 0);
}, 0);
console.log('sync');

Correct Output

sync
outer
inner

Why this output?

Explanation: sync runs first. outer fires in macrotask 1. Inside it, inner is registered as a new macrotask. inner runs in macrotask 2.

Key Insight: A setTimeout inside a setTimeout callback schedules a new macrotask — runs in a future event loop iteration.

More Event Loop & Promises Output Questions

EasySynchronous code runs before setTimeoutMediumPromise microtask before setTimeout macrotaskMediumPromise chain passes valuesHardTwo Promise chains interleave in microtask queue

Practice predicting output live →

66 output questions with instant feedback

💻 Try Output Quiz