1 回答

TA貢獻1995條經(jīng)驗 獲得超2個贊
await foo(); await bar();
僅在解決了返回的 Promise后才會調(diào)用bar
(從而創(chuàng)建第二個 Promise)。foo
var x = foo(); var y = bar(); await x;
在解決返回的承諾之前調(diào)用bar
(從而創(chuàng)建第二個承諾) 。foo
這就是承諾“同時”的原因。如果您在不同的地方添加,console.log
您將看到執(zhí)行上的差異:
function timeoutPromise(name, interval) {
return new Promise((resolve, reject) => {
console.log(`Promise ${name} created.`);
setTimeout(function(){
console.log(`Promise ${name} resolved.`);
resolve("done");
}, interval);
});
};
async function timeTest1() {
console.log('test 1');
await timeoutPromise(1, 3000);
console.log('between promise 1 and 2');
await timeoutPromise(2, 3000);
}
async function timeTest2() {
console.log('test 2');
const timeoutPromise1 = timeoutPromise(1, 3000);
console.log('between promise 1 and 2');
const timeoutPromise2 = timeoutPromise(2, 3000);
await timeoutPromise1;
console.log('between promise 1 and 2 with await');
await timeoutPromise2;
}
timeTest1().then(timeTest2);
添加回答
舉報