Печать в консоль: задача 17

В исходнике SyntaxError: первый setTimeout закрыт фигурной скобкой вместо круглой. После исправления на ); порядок будет 2, 6, 1, 3, 4, 5, 7.

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

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

В исходнике SyntaxError: первый setTimeout закрыт фигурной скобкой вместо круглой. После исправления на ); порядок будет 2, 6, 1, 3, 4, 5, 7.

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

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

Условие

Определите порядок вывода в консоль

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

console.log(2);

setTimeout(() =>
    new Promise((res) => {
    console.log(3);
    res(null);
    }).then(() => console.log(4))
};

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

console.log(6);

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

Ответ

В исходнике SyntaxError: первый setTimeout закрыт фигурной скобкой вместо круглой. После исправления на ); порядок будет 2, 6, 1, 3, 4, 5, 7.

Синхронные строки выводят 2 и 6, затем выполняется микрозадача с 1. Первый таймер создаёт Promise, чей executor сразу печатает 3. Его then печатает 4 в микрозадаче после завершения этого таймера, до следующих timer-callbacks 5 и 7. Как написано в условии, весь script не проходит синтаксический разбор и не выводит даже начальные числа.

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

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

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

Подробнее