Axios 插件:重試失敗的請(qǐng)求。
npm install axios-retry
// CommonJS
// const axiosRetry = require('axios-retry');
// ES6
import axiosRetry from 'axios-retry';
axiosRetry(axios, { retries: 3 });
// 第一次請(qǐng)求失敗,第二次返回 'ok'
axios.get('http://example.com/test')
.then(result => {
result.data; // 'ok'
});
// 請(qǐng)求之間用指數(shù)后退形式的重試延遲
axiosRetry(axios, { retryDelay: axiosRetry.exponentialDelay});
// 自定義重試延遲
axiosRetry(axios, { retryDelay: (retryCount) => {
return retryCount * 1000;
}});
// 自定義 axios 實(shí)例
const client = axios.create({ baseURL: 'http://example.com' });
axiosRetry(client, { retries: 3 });
// 第一次請(qǐng)求失敗,第二次成功
client.get('/test')
.then(result => {
result.data; // 'ok'
});
// 允許 request-specific 配置
client
.get('/test', {
'axios-retry': {
retries: 0
}
})
.catch(error => { // 第一次請(qǐng)求失敗
error !== undefined
});
備注: 除非 shouldResetTimeout
被設(shè)置, 這個(gè)插件將請(qǐng)求超時(shí)解釋為全局值, 不是針對(duì)每一個(gè)請(qǐng)求,而是全局的設(shè)置。
Name | Type | Default | Description |
---|---|---|---|
retries | Number | 3 | 失敗前重試的次數(shù)。 |
retryCondition | Function | isNetworkOrIdempotentRequestError | 如果應(yīng)該重試請(qǐng)求,則進(jìn)一步控制的回調(diào)。默認(rèn)情況下,如果是冪等請(qǐng)求的網(wǎng)絡(luò)錯(cuò)誤或5xx錯(cuò)誤,它會(huì)重試(GET, HEAD, OPTIONS, PUT or DELETE). |
shouldResetTimeout | Boolean | false | 定義是否應(yīng)在重試之間重置超時(shí)。 |
retryDelay | Function | function noDelay() { return 0; } | 控制重試請(qǐng)求之間的延遲。默認(rèn)情況下,重試之間沒(méi)有延遲。另一個(gè)選項(xiàng)是exponentialDelay (Exponential Backoff). 這個(gè)函數(shù)傳遞retryCount 和error . |
更多建議: