Ожидаемый вывод в консоль – задача 109

Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.

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

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

Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.

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

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

Условие

Какой результат будет выведен в консоль?

console.log(1);

setTimeout(() => console.log(2));

Promise.resolve().then(() => console.log(3));

let myPromise = new Promise(function(resolve, reject) {
  console.log(4);
  resolve();
});

myPromise.then(function() {
  console.log(5);
});

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

Promise.resolve().then(() => console.log(7));

setTimeout(() => console.log(8));

console.log(9);

Ответ

Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.

Синхронная часть выводит 1, 4 и 9. Затем очередь микрозадач выполняет печать 3, печать 5, регистрацию таймера 6 и печать 7. После этого обрабатываются таймеры: ранее зарегистрированные 2 и 8, затем созданный в микрозадаче 6. Отсутствующая задержка и 0 не заставляют таймер выполниться до завершения синхронного кода и микрозадач.

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

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

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

Подробнее