axios.all + axios-retry 重試
阿新 • • 發佈:2020-12-18
技術標籤:Vue
axios.all
只要一個請求出現失敗 , 就不會走then.
https://segmentfault.com/q/1010000022011292
使用 axios-retry
來使每個請求確保成功.
const axios = require('axios');
const axiosRetry = require('axios-retry');
// https://segmentfault.com/q/1010000022011292
// https://stackoverflow.com/questions/56074531/how-to-retry-5xx-requests-using-axios
axiosRetry(axios, {
retries : 3, // number of retries
retryDelay: (retryCount) => {
console.log(`retry attempt: ${retryCount}`);
return retryCount * 200; // time interval between retries
}
/*
retryCondition: (error) => {
// if retry condition is not specified, by default idempotent requests are retried
return error.response.status === 500;
},
*/
});
function test() {
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('success, 1');
resolve(1)
}, 1000)
});
/*
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('fail, 2')
reject(2)
}, 2000)
})
*/
let p2 = axios({
method: 'GET',
// url : 'https://ar.jingaisheji.com/tour/c8b898dbaa8fb34a'
url : 'https://test.local'
});
let p3 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('success, 3');
resolve(3)
}, 3000)
});
axios.all([p1, p2, p3]).then(
res => {
console.log(res);
console.log('all done')
}, error => {
console.log('someone failed')
})
}
test();