Задача

При обычном выполнении браузерного примера порядок будет: 1, 2, 7, 10, 9, 6, 5, 8, 4, 3.

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

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

При обычном выполнении браузерного примера порядок будет: 1, 2, 7, 10, 9, 6, 5, 8, 4, 3.

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

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

Условие

Задача

  1. В каком порядке выведутся значения?
console.log('1');

Promise.resolve(console.log('2'));

setTimeout(function cb1() {
  console.log('3');
}, 2000);

Promise.resolve().then(() => setTimeout(() => console.log('4')));

setTimeout(function cb3() {
  Promise.resolve('5').then(console.log);
  console.log('6');
});

console.log('7');

setTimeout(function cb4() {
  console.log('8');
}, 0);

new Promise((res) => res('9')).then(console.log);

console.log('10');

Ответ

При обычном выполнении браузерного примера порядок будет: 1, 2, 7, 10, 9, 6, 5, 8, 4, 3.

console.log('2') вызывается синхронно при вычислении аргумента Promise.resolve. Затем микрозадача планирует таймер 4, а другая печатает 9. Нулевой таймер печатает 6, его микрозадача — 5; далее идут ранее поставленный 8 и затем 4. Таймер 3 ждёт 2000 мс; задержки таймеров не являются точным временем исполнения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее