我应该总是在Javascript中的异步函数返回链中使用wait吗



考虑两种编写代码的方法:

第一种方法:立即返回,异步函数中没有等待

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,而不是一路展开和包装它。

最新更新