Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.
Определите порядок вывода в консоль
Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Укажите, в каком порядке появятся сообщения в консоли при выполнении следующего кода:
console.log(1);
setTimeout(() => console.log(2));
Promise.resolve().then(() => console.log(3));
Promise.resolve().then(() => setTimeout(() => console.log(4)));
Promise.resolve().then(() => console.log(5));
setTimeout(() => console.log(6));
console.log(7);
Ответ
Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.
Сначала выполняются console.log(1) и console.log(7). Затем первый then печатает 3, второй планирует таймер 4, третий печатает 5. После микрозадач последовательно выполняются таймеры 2, 6 и 4. Сам факт нахождения setTimeout внутри then не превращает callback таймера в микрозадачу.