Порядок: 1, 6, 4, 2, 3, 3.1, 5. Микрозадачи выполняются после текущего синхронного кода и между отдельными задачами таймеров.
Определение порядка вывода в консоль JavaScript‑кода
Порядок: 1, 6, 4, 2, 3, 3.1, 5. Микрозадачи выполняются после текущего синхронного кода и между отдельными задачами таймеров.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно указать, какие значения и в каком порядке появятся в консоли при выполнении следующего скрипта.
console.log(1);
setTimeout(() => console.log(2));
setTimeout(() => {
console.log(3)
Promise.resolve().then(() => console.log(3.1))
}, 0);
Promise.resolve().then(() => console.log(4));
setTimeout(() => console.log(5));
console.log(6)
Ответ
Порядок: 1, 6, 4, 2, 3, 3.1, 5. Микрозадачи выполняются после текущего синхронного кода и между отдельными задачами таймеров.
Сначала главный стек печатает 1 и 6, затем then — 4. Таймеры поставлены в порядке 2, 3, 5. Обработчик с 3 добавляет микрозадачу 3.1, которую event loop выполнит до перехода к таймеру с 5.