Как расставить 1–10 в смешанной очереди JS?

Подстановка: A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10. Здесь буквенный порядок совпадает с последовательностью исполнения, но не с порядком всех строк кода.

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

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

Подстановка: A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10. Здесь буквенный порядок совпадает с последовательностью исполнения, но не с порядком всех строк кода.

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

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

Условие

В браузерном скрипте замените A–J на числа 1–10, чтобы вывод был возрастающим:

console.log(A);
new Promise(resolve => { console.log(B); resolve(); })
  .then(() => { console.log(D); queueMicrotask(() => console.log(F)); })
  .then(() => console.log(G));
queueMicrotask(() => console.log(E));
setTimeout(() => { console.log(H); Promise.resolve().then(() => console.log(I)); }, 0);
setTimeout(() => console.log(J), 0);
console.log(C);

Ответ

Подстановка: A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10. Здесь буквенный порядок совпадает с последовательностью исполнения, но не с порядком всех строк кода.

Синхронно выполняются A, executor с B и C. Первой микрозадачей идёт D: она добавляет F, после её завершения цепочка добавляет G. Уже стоявшая E остаётся перед F и G. Затем первый таймер печатает H, его микрозадача — I, второй таймер — J. Именно появление новых задач во время обработки делает простую сортировку по строкам неверной.

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

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

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

Подробнее