Выбор ответа Junior Event loop обновлено
Блокирует ли await поток
Вопрос
Что происходит с потоком, когда async-функция доходит до await fetch(url)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Функция встаёт на паузу и отдаёт поток, а продолжение придёт микрозадачей. await приостанавливает только текущую async-функцию: она возвращает вызывающему коду промис, и поток свободен для остального кода, обработки событий и отрисовки.
Варианты ответа
- Поток блокируется, пока не придёт ответ, а события копятся в очереди
- Браузер создаёт новый поток, в котором и продолжится выполнение функции
- Функция встаёт на паузу и отдаёт поток, а продолжение придёт микрозадачейправильный ответ
awaitпревращает запрос в синхронный, какXMLHttpRequestс флагомfalse
Разбор
await приостанавливает только текущую async-функцию: она возвращает вызывающему коду промис, и поток свободен для остального кода, обработки событий и отрисовки. Когда промис выполнится, продолжение функции будет поставлено в очередь микрозадач. Новых потоков await не создаёт, сам запрос ведёт браузер вне JS-потока. Синхронным fetch не становится.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.