Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.
Почему несколько HTTP-запросов могут выполняться конкурентно, хотя JavaScript однопоточный? Объясните роль event loop, микро- и макрозадач.
Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сеть обслуживается средой выполнения, пока JavaScript свободен для других задач; завершённые операции ставят обработчики в очереди event loop.
Один поток выполнения JS не означает один сетевой запрос за раз. После завершения текущей задачи выполняются доступные микрозадачи, в том числе реакции Promise, затем цикл продолжает обработку задач. fetch запускает сетевую работу, а await приостанавливает только текущую async-функцию; он не блокирует весь браузер.