沒錯,我很忙,任務很多,但是‘磨刀不誤砍柴工’。
你有沒有遇到過這種情況,當一個頁面加載的時候,需要同時請求多個接口,這裏面有的可能是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