Почему несколько HTTP-запросов могут выполняться конкурентно, хотя JavaScript однопоточный? Объясните роль event loop, микро- и макрозадач.

Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.

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

Что ответить на собеседовании

Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.

Подробный разбор

Ответ с пояснениями

Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.

Один поток выполнения JS не означает один сетевой запрос за раз. После завершения текущей задачи выполняются доступные микрозадачи, в том числе реакции Promise, затем цикл продолжает обработку задач. fetch запускает сетевую работу, а await приостанавливает только текущую async-функцию; он не блокирует весь браузер.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее