没错,我很忙,任务很多,但是‘磨刀不误砍柴工’。
你有没有遇到过这种情况,当一个页面加载的时候,需要同时请求多个接口,这里面有的可能是banner,另一个可能是下方的列表。这两个接口的结果互不干涉,并没有同步执行的必要。
原始
async function test1() {
await A();
await B();
};
进化
function test2() {
testA();
testB();
}
async function testA() {
await A();
}
async function testB() {
await B();
}
看到这里,你可能会问,为啥不直接请求,去掉这多余的 async
以及 await
,我也想啊,但是 A
和 B
函数相当于 axios
返回的 Promise
对象。
另一种可能
function test3() {
Promise.all([
(async () =>
await A();
),
(async () =>
await B();
)
]);
}
我现在只知道【原始】肯定是A执行完,B才会执行,两外两种代码还不清楚是否是异步执行的,后期我会新增测试函数,统计时间区别来做检验,但我感觉【进化】和【另一种可能】的效果是一样的,甚至【进化】有可能更快于【另一种可能】……
参考链接
[1] MDN Promise.all