Определение последовательности вывода в console.log (пример 66)

Порядок вывода: 1, 3, 4, 5, 7, 6, 8, 2. Синхронный код завершается первым, затем выполняются микрозадачи, затем callback таймера.

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

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

Порядок вывода: 1, 3, 4, 5, 7, 6, 8, 2. Синхронный код завершается первым, затем выполняются микрозадачи, затем callback таймера.

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

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

Условие

Установите порядок, в котором будут напечатаны строки в консоль.

console.log('1');
setTimeout(() => {
    console.log('2');
});

new Promise((res, rej) => {
    console.log('3');
    res();
}).then(() => {
    console.log('4');
});

Promise.resolve().then(() => {
    console.log('5');
}).then(() => {
    console.log('6');
});

Promise.resolve().then(() => {
    console.log('7');
}).then(() => {
    console.log('8');
});

Ответ

Порядок вывода: 1, 3, 4, 5, 7, 6, 8, 2. Синхронный код завершается первым, затем выполняются микрозадачи, затем callback таймера.

Исполнитель new Promise сразу печатает 3. После основного стека очередь содержит обработчики 4, 5 и 7. Во время 5 добавляется 6, во время 7 — 8; они идут после уже стоявших микрозадач. Нулевая задержка таймера не даёт ему приоритет над ними.

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

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

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

Подробнее