Определение последовательности вывода в консоль (задача 67)

Порядок: 1, 3, 9, 4, 5, 7, 6, 8, 2. Executor нового Promise печатает 3 синхронно, а цепочки then чередуются через очередь микрозадач.

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

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

Порядок: 1, 3, 9, 4, 5, 7, 6, 8, 2. Executor нового Promise печатает 3 синхронно, а цепочки then чередуются через очередь микрозадач.

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

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

Условие

В какой последовательности будут напечатаны сообщения, вызванные console.log?

console.log('1');
setTimeout(() => {
    console.log('2');
});
new Promise((resolve, reject) => {
    console.log('3');
    resolve();
}).then(() => {
    console.log('4');
});
Promise.resolve().then(() => {
    console.log('5');
}).then(() => {
    console.log('6');
});
Promise.resolve().then(() => {
    console.log('7');
}).then(() => {
    console.log('8');
});
console.log('9');

Ответ

Порядок: 1, 3, 9, 4, 5, 7, 6, 8, 2. Executor нового Promise печатает 3 синхронно, а цепочки then чередуются через очередь микрозадач.

После синхронных 1, 3 и 9 очередь уже содержит обработчики с 4, 5 и 7. При выполнении 5 появляется новая микрозадача с 6, но 7 уже стояла в очереди раньше. Аналогично обработчик 7 добавляет 8 после 6.

Поэтому сначала выполняются 4, 5, 7, затем 6 и 8. Таймер с 2 — отдельная задача и идёт после освобождения очереди микрозадач.

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

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

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

Подробнее