Sobes.tech
Middle

Event Loop task: determine the order of console output when setTimeout, Promise, and synchronous code are present. What will be output last and why?

sobes.tech AI

Answer from AI

In JavaScript, the order of code execution with setTimeout, Promise, and synchronous code is determined by the Event Loop and task queues (task queue and microtask queue).

  1. First, all synchronous code is executed.
  2. Then, all microtasks (microtasks), such as Promise handlers, are executed.
  3. After that, macrotasks (tasks), such as setTimeout, are executed.

Example:

console.log('Synchronous code');

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

Promise.resolve().then(() => {
  console.log('Promise');
});

The output will be:

Synchronous code
Promise
setTimeout

The message from setTimeout will be output last because setTimeout is placed in the macrotask queue, which is processed after microtasks (Promise).