Что выведет код Senior Event loop обновлено

Вложенные микрозадачи

Вопрос

Что выведет код? По строке на каждый вывод.

Promise.resolve().then(() => {
  console.log('м1');
  Promise.resolve().then(() => console.log('м1.1'));
});
Promise.resolve().then(() => console.log('м2'));
setTimeout(() => console.log('таймер'));
console.log('синхронно');

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: синхронно, м1, м2, м1.1, таймер. Почему так Очередь микрозадач осушается полностью, включая те, что добавлены по ходу.

Что выведет

синхронно
м1
м2
м1.1
таймер

Разбор

Почему так

Очередь микрозадач осушается полностью, включая те, что добавлены по ходу. Поэтому 'м1.1' успевает до таймера. Бесконечное добавление микрозадач заблокирует страницу навсегда - макрозадачи не получат управления.

Вывод

синхронно
м1
м2
м1.1
таймер

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме