В очереди для микрозадач ничего нет, пока обещания разрешить .До тех пор другие задачи и события (UI) могут обрабатываться.
Это связано с тем, что оператор await
заставит соответствующую функцию async
немедленно вернуться, что позволит выполнить другой код JS.В вашем случае обещание возвращается fetch
, что на практике не разрешит немедленно .Таким образом, здесь ничего не блокируется.
Тогда, когда HTTP-ответ разрешит обещание fetch
, действительно будет создана микрозадача, которая при выполнении восстанавливает соответствующий async
контекст выполнения функции.Вашему примеру функции больше нечего делать, так что это быстро делается.
Обратите внимание, что не имеет значения, была ли эта функция первоначально вызвана из какой-либо другой функции: на этом этапе восстанавливается только контекст выполнения этой конкретной функции (в котором разрешено ожидаемое обещание) без какого-либо ранее существующего стека вызовов,Таким образом, он не возвращает снова функции обтекания.Это уже произошло на первом этапе и больше не повторится.
Затем снова происходит бесплатная обработка событий до разрешения следующего обещания fetch
.И так продолжается.