[英]How to do retry on status 200 using axios-retry
I am using axios-retry I am trying that it will do retry on response condition and not on response status.我正在使用axios-retry我试图让它在响应条件而不是响应状态下重试。 My status is 200 I think because of that it not going to retry, My code is
我的状态是 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);
});
} }
I tried to throw a 500 with an axios interceptor and then I configured an axios-retry... but that turned ugly real quick...我试图用 axios 拦截器抛出一个 500,然后我配置了一个 axios-retry……但这很快就变得丑陋了……
I ended up doing this我最终这样做了
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.