Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Event Loop, microtask, Promise, async, JavaScript

2222222

Вопрос проверяет понимание принципов работы с асинхронным кодом в JavaScript, в частности, как обрабатываются промисы и микрозадачи в Event Loop.

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

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

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

Event Loop — это фундаментальная концепция в JavaScript, которая обеспечивает неблокирующее выполнение асинхронного кода в однопоточной среде. Он управляет порядком выполнения задач, разделяя их на синхронные (стека вызовов) и асинхронные (очереди).

Ключевые компоненты Event Loop

  • Стек вызовов (Call Stack): выполняет синхронный код по принципу LIFO.
  • Очередь микрозадач (Microtask Queue): содержит промисы (then/catch/finally), queueMicrotask, MutationObserver.
  • Очередь макрозадач (Macrotask Queue): включает setTimeout, setInterval, setImmediate, I/O операции, события UI.

Как работает цикл событий

Основной алгоритм: сначала выполняется весь синхронный код из стека. Затем Event Loop проверяет очередь микрозадач и выполняет все задачи из неё до полного опустошения. Только после этого он берёт одну задачу из очереди макрозадач, выполняет её, и снова проверяет микрозадачи. Этот приоритет микрозадач над макрозадачами критичен для понимания порядка выполнения.

Пример кода с объяснением

console.log('1'); // Синхронный код

setTimeout(() => {
  console.log('2'); // Макрозадача
}, 0);

Promise.resolve().then(() => {
  console.log('3'); // Микрозадача
});

console.log('4'); // Синхронный код

// Вывод: 1, 4, 3, 2

В этом примере сначала выполняются синхронные console.log (1 и 4). Затем Event Loop обрабатывает микрозадачи: промис выводит 3. После этого выполняется макрозадача setTimeout, выводящая 2, несмотря на нулевую задержку.

Где это применяется

Понимание Event Loop необходимо для оптимизации производительности веб-приложений, предотвращения "подвисаний" интерфейса и правильной работы с асинхронными операциями (запросы к API, анимации, обработка событий). В Node.js это также важно для работы с файловой системой, сетью и базами данных.

Вывод: Event Loop — это основа асинхронности в JavaScript; его знание помогает писать эффективный, отзывчивый код, особенно при работе с промисами, async/await и таймерами.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#Event Loop

#microtask

#Promise

#async

#JavaScript

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию