考虑两种编写代码的方法:
第一种方法:立即返回,异步函数中没有等待。
function f4() {
return new Promise((resolve) => {
setTimeout(() => {
resolve(2);
}, 3000);
}).catch((e) => console.log(e));
}
function f3() {
return f4();
}
function f2() {
return f3();
}
function f1() {
return f2();
}
async function main() {
await f1();
}
(async () => await main())();
和
第二种方法:在每个异步函数中使用await。
function f4() {
return new Promise((resolve) => {
setTimeout(() => {
resolve(2);
}, 3000);
}).catch((e) => console.log(e));
}
async function f3() {
return await f4();
}
async function f2() {
return await f3();
}
async function f1() {
return await f2();
}
async function main() {
await f1();
}
(async () => await main())();
我认为第二种方法需要更多的时间来执行代码。但我不确定
我们看到,当我们使用第1种方式时,只有1个Promise会去回调。但使用第二种方式,我们将有超过1个Promise进入回调。
哪种方式可以提供更好的性能?非常感谢。
等待Promise并立即在async
函数中返回它并没有真正的好处。
该值将再次包装在Promise中,因为async
函数总是返回Promise。您还可以将f4
返回的初始Promise一直返回到main
,而不是一路展开和包装它。