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