В каком порядке выполняются Promise и queueMicrotask

Будет A, F, B, C, D, E. Сначала выполняется текущий синхронный код, затем очередь микрозадач, включая добавленные при её обработке.

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

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

Будет A, F, B, C, D, E. Сначала выполняется текущий синхронный код, затем очередь микрозадач, включая добавленные при её обработке.

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

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

Условие

В браузере выполнен код:

console.log('A');
queueMicrotask(() => console.log('B'));
Promise.resolve().then(() => {
  console.log('C');
  queueMicrotask(() => console.log('D'));
});
setTimeout(() => console.log('E'), 0);
console.log('F');

Назовите порядок.

Ответ

Будет A, F, B, C, D, E. Сначала выполняется текущий синхронный код, затем очередь микрозадач, включая добавленные при её обработке.

B поставлена в очередь раньше реакции Promise C. Во время C добавляется D, которая выполняется до перехода к таймеру E. Нулевая задержка таймера не ставит его впереди микрозадач. Если микрозадачи бесконечно добавляют новые микрозадачи, они могут задержать таймеры и отрисовку.

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

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

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

Подробнее