簡體   English   中英

如何使用 axios-retry 重試狀態 200

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM