1 回答

TA貢獻1757條經驗 獲得超7個贊
首先,
awati
后面應該跟Promise
實例。其次,
async
函數返回的是Promise
實例。
具體到樓主的例子,fun1
、fun2
前面的async
是多余的,因為 fun1() => fun2() => fun3()
已經返回了Promise
實例。
可以改成下面的代碼。
function fun1() {
return fun2(); // 這里的 await 為什么可以省略?加上await結果也是一樣的
}
function fun2() {
return fun3(); // 這里的 await 為什么可以省略?加上await結果也是一樣的
}
function fun3() {
return new Promise(resolve => {
console.log('fun3');
resolve('fufff 3 ret');
});
}
async function testfun1() {
const ret = await fun1();
console.log(ret);
}
testfun1()
對比下面的例子,可能更直觀
function bar () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('bar');
}, 1000);
});
}
async function foo () {
let ret1 = bar();
let ret2 = await bar();
console.log(ret1); // Promise { 'bar' }
console.log(ret2); // bar
}
foo();
添加回答
舉報