Будет A, F, B, C, D, E. Сначала выполняется текущий синхронный код, затем очередь микрозадач, включая добавленные при её обработке.
В каком порядке выполняются Promise и queueMicrotask
Будет 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. Нулевая задержка таймера не ставит его впереди микрозадач. Если микрозадачи бесконечно добавляют новые микрозадачи, они могут задержать таймеры и отрисовку.