简体   繁体   English

如何使用 axios-retry 重试状态 200

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM