Event Loop в JavaScript: порядок выполнения Promise и вложенных setTimeout

Порядок вывода: 1, 6, 4, 2, 3, 5.

Короткий ответ

Что ответить на собеседовании

Порядок вывода: 1, 6, 4, 2, 3, 5.

Подробный разбор

Ответ с пояснениями

Условие

console.log('1')

setTimeout(() => {
  console.log('2')
  Promise.resolve().then(() => console.log('3'))
}, 0)

Promise.resolve().then(() => {
  console.log('4')
  setTimeout(() => console.log('5'), 0)
})

console.log('6')

Ответ

Порядок вывода: 1, 6, 4, 2, 3, 5.

Сначала выполняется синхронный код (1, 6), затем микрозадача Promise (4). Она ставит второй таймер после уже зарегистрированного первого. Первый таймер выводит 2, а его микрозадача — 3. После этого выполняется второй таймер и выводит 5.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку