> Каков порядок вывода консольных логов при использовании setTimeout и промисов в JavaScript (JavaScript)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: amoCRM
Стек: JavaScript
> Пример ответа
Порядок вывода логов в консоли при использовании setTimeout и промисов определяется механизмом Event Loop и очередями задач (task queues) в JavaScript.
Сначала выполняются синхронные операции. Затем, когда стек вызовов освобождается, обрабатываются микрозадачи (microtasks), к которым относятся колбэки промисов (.then, .catch, .finally). После этого обрабатываются макрозадачи (macrotasks), такие как колбэки setTimeout.
Пример:
JAVASCRIPTconsole.log('1'); // синхронноsetTimeout(() => {console.log('2'); // макрозадача}, 0);Promise.resolve().then(() => {console.log('3'); // микрозадача});console.log('4'); // синхронно
Вывод: 1, 4, 3, 2.
Объяснение: 1 и 4 выводятся сразу. Промис (микрозадача) выполняется до setTimeout (макрозадача), поэтому 3 выводится перед 2.
> Похожие задачи по frontend
Каков порядок выполнения setTimeout и промисов в JavaScript при вложенных вызовах
Как проверить тег элемента в обработчике события клика в JavaScript
Можно ли отлавливать события на фазе погружения (capture phase) в JavaScript и как это сделать
Какие способы выполнения HTTP-запросов в браузере на JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью