Встречается на собеседованиях • сегодня

Как браузер определяет, что асинхронный код не выполняется

Браузер использует Event Loop для мониторинга выполнения асинхронного кода. Основные этапы:

  1. Call Stack - выполняется синхронный код. Если стек пуст, движок проверяет очередь задач.
  2. Task Queue (Macrotask) - сюда попадают setTimeout, setInterval, DOM-события и т.д.
  3. Microtask Queue - приоритетнее макрозадач, сюда попадают Promise, MutationObserver.

Пример:

javascript
console.log('Start');
setTimeout(() => console.log('Timeout'), 0);
Promise.resolve().then(() => console.log('Promise'));
console.log('End');

Вывод:

text
Start
End
Promise
Timeout

Браузер считает код "завершенным", когда:

  • Call Stack пуст
  • Очереди Microtask и Macrotask пусты
  • Нет ожидающих сетевых запросов или таймеров
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы