async/await Event Loop работа

95 подписчиков

12+
12+

1 просмотр

4 дня назад

ПожаловатьсяНарушение авторских прав

95 подписчиков

12+
12+

1 просмотр

4 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

1 просмотр

4 дня назад

То, что асинхронная функция неявно возвращает промис — это, конечно, здорово, но мощь данной функции в полной мере проявляется при использовании ключевого слова await. await заставляет асинхронную функцию ждать выполнение промиса (его значения). Чтобы получить значение выполненного промиса, мы должны присвоить переменной ожидаемое (awaited) значение промиса. Получается, что мы может отложить выполнение асинхронной функции? Отлично, но… что это значит? Посмотрим, что происходит при запуске следующего кода: Сначала движок видит console.log. Данный метод помещается в стек, в консоль выводится Before function!. Затем вызывается асинхронная функция myFunc(), выполняется ее код. В первой строке этого кода мы вызываем второй console.log со строкой 'In function!'. Данный метод добавляется в стек, его значение выводится в консоль, и он удаляется из стека. Код функции выполняется дальше. На второй строке у нас имеется ключевое слово await. Первое, что здесь происходит, это выполнение ожидаемого значения: в данном случае функции one. Она помещается в стек и возвращает промис. После того, как промис выполнился, а функция one вернула значение, движок видит await. После этого выполнение асинхронной функции откладывается. Выполнение тела функции приостанавливается, оставшийся код выполняется как микрозадача. После того, как выполнение асинхронной функции было отложено, движок возвращается к выполнению кода в глобальном контексте. После выполнения всего кода в глобальном контексте, цикл событий проверяет наличие микрозадач и обнаруживает myFunc(). myFunc() помещается в стек и выполняется.

Название:

async/await Event Loop работа

Категория:

Разное