在 Vue 程序中,大部分場景下都需要進行請求數(shù)據(jù),而 Axios 是目前最流行的 HTTP 庫之一。當(dāng)我們需要同時進行多個請求的時候,如何避免回調(diào)地獄,保持代碼的可讀性和可維護性呢?答案就是使用 Axios 并發(fā)請求。
// 引入 axios
import axios from 'axios';
// 發(fā)送兩個請求
axios.all([
axios.get('/api/data1'),
axios.get('/api/data2')
]).then(axios.spread(function (res1, res2) {
console.log(res1.data);
console.log(res2.data);
})).catch(function (error) {
console.log(error);
});
在上面的代碼中,我們通過 axios.all 方法同時發(fā)送了兩個請求,然后通過 axios.spread 方法獲取兩個請求的返回結(jié)果,最后處理數(shù)據(jù)或者錯誤信息。
值得注意的是,在以上代碼中,如果我們兩個請求中的任意一個出現(xiàn)了錯誤,那么就會跳到 catch 方法中,并且返回該錯誤。因此,我們需要在 catch 方法中對錯誤進行必要的處理。
// 發(fā)送三個請求
axios.all([
axios.get('/api/data1'),
axios.get('/api/data2'),
axios.get('/api/data3')
]).then(function (res) {
console.log(res[0].data);
console.log(res[1].data);
console.log(res[2].data);
}).catch(function (err) {
console.log(err);
});
以上代碼中,我們通過 axios.all 方法同時發(fā)送了三個請求,并在 then 方法中,通過數(shù)組索引獲取每個請求的返回結(jié)果。同樣地,在 catch 方法中對錯誤進行了處理。
此外,在需要發(fā)送多個請求的時候,我們也可以通過 Promise.all 方法來實現(xiàn)。如下所示:
// 發(fā)送兩個請求
Promise.all([
axios.get('/api/data1'),
axios.get('/api/data2')
]).then(function (res) {
console.log(res[0].data);
console.log(res[1].data);
}).catch(function (err) {
console.log(err);
});
以上代碼中,我們通過 Promise.all 方法同時發(fā)送了兩個請求,并在 then 方法中,通過數(shù)組索引獲取每個請求的返回結(jié)果。同樣地,在 catch 方法中對錯誤進行了處理。
總之,在 Vue 中使用 Axios 并發(fā)請求非常方便輕松,并能夠大大減少回調(diào)地獄,提高程序的可讀性和可維護性。以上就是 Axios 并發(fā)請求的詳細介紹。如有需要,可根據(jù)實際需求自行進行擴展。