Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: event, loop, microtask, stack

Event Loop, что и когда выводится в консоль

Этот вопрос проверяет понимание асинхронной природы JavaScript и механизма Event Loop, который управляет выполнением кода.

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

Event Loop - это механизм, который позволяет JavaScript обрабатывать асинхронные операции, несмотря на то, что язык однопоточный. Он постоянно проверяет очередь задач и выполняет их по порядку. Сначала выполняются все синхронные операции, затем микротаски (promises), и только потом макротаски (setTimeout, setInterval). Это объясняет, почему некоторые операции выполняются не в том порядке, в котором они записаны в коде.

Длинный ответ

Event Loop - это фундаментальный механизм JavaScript, который обеспечивает выполнение асинхронного кода в однопоточной среде.

Основные компоненты Event Loop

  • Call Stack - стек вызовов, где выполняются синхронные операции

  • Callback Queue - очередь обратных вызовов для макротасков

  • Microtask Queue - очередь для микротасков (promises)

  • Event Loop - механизм, который координирует работу всех компонентов

Приоритет выполнения

  1. Синхронный код выполняется первым и полностью

  2. Микротаски (promises) выполняются сразу после синхронного кода

  3. Макротаски (setTimeout, setInterval) выполняются после микротасков

Пример выполнения

console.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')

  • Затем Event Loop проверяет очередь микротасков и выполняет promise: console.log('3')

  • И только после этого выполняются макротаски: console.log('2')

Практическое применение

  • Оптимизация производительности - понимание Event Loop помогает избежать блокировки основного потока

  • Правильная работа с асинхронными операциями - предсказуемое выполнение кода

  • Отладка сложных сценариев - понимание порядка выполнения операций

Вывод: Event Loop критически важен для понимания асинхронности в JavaScript. Используйте микротаски для высокоприоритетных асинхронных операций и макротаски для операций, которые могут быть отложены.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#event

#loop

#microtask

#stack

Подпишись на React Developer в телеграм