> В каком порядке выполняются console.log в JavaScript с учетом синхронности и микротасков? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: РСХБ
Стек: JavaScript
> Пример ответа
В JavaScript порядок выполнения console.log определяется циклом событий (event loop). Сначала выполняется весь синхронный код (стек вызовов), затем обрабатываются микротаски (Promise.then, queueMicrotask, MutationObserver), и только потом - макротаски (setTimeout, setInterval, I/O).
Пример:
JAVASCRIPTconsole.log('1'); // синхронноsetTimeout(() => console.log('2'), 0); // макротаскаPromise.resolve().then(() => console.log('3')); // микротаскаconsole.log('4'); // синхронно
Вывод: 1, 4, 3, 2.
Объяснение:
- Сначала выполняются
console.log('1')иconsole.log('4')- синхронный код. - Затем, после завершения синхронного стека, обрабатывается микротаска
Promise.then, выводя3. - И только после этого - макротаска
setTimeout, выводя2.
Таким образом, микротаски имеют приоритет над макротасками, но выполняются после синхронного кода.
> Похожие задачи по frontend
Как реализовать полифилл для Array.prototype.some с учетом callback и thisArg?
Как реализовать возврат true или false в полифилле some для прерывания перебора при первом true?
Как упростить реализацию функции pipe, комбинирующей несколько функций в JavaScript?
Как избежать зависания интерфейса при долгих вычислениях в однопоточном JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью