[英]How to do retry on status 200 using axios-retry
我正在使用axios-retry我試圖讓它在響應條件而不是響應狀態下重試。 我的狀態是 200 我認為因為它不會重試,我的代碼是
raxConfig: {
retry: retry,
retryDelay: retryDelay,
httpMethodsToRetry: ["GET"],
statusCodesToRetry: [
[200, 300]
],
shouldRetry: (err) => {
const cfg = rax.getConfig(err);
if (cfg.data.isFinal == true) {
return false
} else {
return true;
}
}
static async event( retry = 5, retryDelay = 10000) {
//default retryDelay 10 sec
const restURL ='www.sdfdsfds.sdfds'
for (let i = 0; i < retry; i++) {
const response = await this.rest(restURL);
if (
response.status == 200
) {
return response.data;
}
await this.delay(retryDelay);
}
return Promise.reject(new Error(400));
}
static delay(milisec = 10000) {
return new Promise(resolve => {
setTimeout(() => {
resolve("resolved");
}, milisec);
});
}
我試圖用 axios 攔截器拋出一個 500,然后我配置了一個 axios-retry……但這很快就變得丑陋了……
我最終這樣做了
if (retry) {
const MAX = 5;
let tried = 0;
do {
response = await axios.get(url, { ...options });
console.warn('try# ', tried++, response.data);
await delay(1000);
} while (response.data.ok !== 1 && tried < MAX);
} else {
response = await axios.get(url, { ...options });
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.