Вебсправочник
Основы веб-разработки

Цикл событий: синхронный код и микрозадачи

Цикл событий координирует выполнение JavaScript и обработку отложенной работы в браузерной среде.

Назначение

Цикл событий координирует выполнение JavaScript и обработку отложенной работы в браузерной среде.

Как это работает

Синхронный фрагмент завершается до запуска ожидающих обработчиков. Реакции Promise обычно выполняются как микрозадачи, а таймер попадает в очередь задач; задержка таймера не является гарантией точного времени запуска.

Пример

console.log('A');
setTimeout(() => console.log('D'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('B');

Что должно получиться

В обычном запуске отдельного скрипта метки следуют A, B, C, D. Нулевой таймер означает возможность выполнения позже, а не немедленное прерывание текущего кода.

Граница применения и частая ошибка

Не создавайте бесконечную цепочку микрозадач ради «быстрого» повторения. Она может задержать другие задачи и обновление интерфейса, даже если каждый шаг короткий.

Самостоятельная проверка

Предскажите порядок меток перед запуском примера. Затем добавьте длительный синхронный расчёт в отдельном тесте и объясните, почему таймер не прерывает его.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.