Показать сообщение отдельно
  #10 (permalink)  
Старый 31.10.2020, 14:34
Интересующийся
Отправить личное сообщение для vlad_kl Посмотреть профиль Найти все сообщения от vlad_kl
 
Регистрация: 16.06.2020
Сообщений: 22

Сообщение от voraa Посмотреть сообщение
А вы разницу не видите?
num10 запускает таймер и возвращает промис, который разрешится после срабатывания таймера.
А num11 запускает таймер и возвращает уже разрешенный промис. А таймер сам по себе когда-нибудь сработает
Т.е., если я правильно понял, await ожидает завершения выполнения промиса (а не всего кода внутри промиса). Как только промис завершился удачно (даже если там ещё остался какой-то асинхронный код), интерпретатор идёт далее.

В 1м случае в num10 в конструкции new Promise - промис завершится ТОЛЬКО ТОГДА, когда завершится setTimeout, поэтому код ждёт весь setTimeout.
Во 2м случае в num11 async сразу возвращает зарезолвленный промис несмотря на весь код, который внутри async функции. Поэтому await дождался завершения выполнения промиса - и пошёл дальше. А сам setTimeout внутри async функции попал в call stack и выполнился позже. Намного позже, чем выполнение промиса.

Верно? Это очень тонкое отличие...
Спасибо большое всем за помощь
Ответить с цитированием