await
ing test1
и т. Д. Аналогично await
ing setTimeout(...)
напрямую.setTimeout
не основано на обещаниях и не учитывается в цепочке обещаний.
await test1()
и т. Д. Приводят к задержкам в один тик, run()
обещание разрешается мгновенно.
Чтобы код работал так, как задумано, оно должно быть:
function test1 () {
return new Promise(resolve => setTimeout(() => {
console.log("1");
resolve();
}, 2000));
}
test1
и т. Д. Не обязательно должно быть async
, поскольку они не могут воспользоваться обещанием, созданным async
функция.