В первой функции она выполняет pp
сразу, чтобы запустить тайм-аут обещания.
Во второй функции он ждет, пока p
не будет завершено, прежде чем выполнить pp
, чтобы запустить тайм-аут обещания.
Ключевое слово await
блокирует выполнение до тех пор, пока обещание не разрешится, прежде чем перейти к следующей строке.
RE: обновление
В вашем третьем примере все обещания запускаются в то время. Ключевое слово await
ожидает разрешения. Поскольку все ваши обещания начинаются в одно и то же время, все они разрешатся в очень маленькой дельте. К тому времени, когда вы нажмете await p2
, это, вероятно, уже решено. То же самое для p3
.
Во втором примере pp
не начинается, пока не завершится p
.
[*] Это на самом деле не блокирует выполнение, но это влияет на ваш код.