Подстановка: A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10. Здесь буквенный порядок совпадает с последовательностью исполнения, но не с порядком всех строк кода.
Как расставить 1–10 в смешанной очереди JS?
Подстановка: 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. Именно появление новых задач во время обработки делает простую сортировку по строкам неверной.