接口請求失敗處理,重新請求並限制請求次數.自己封裝搞定retry函數


最近開發一款小程序的時候想到一個問題,如果接口突然掛掉怎么辦呢,於是乎想到一個解決辦法.接口 請求重試功能.並限制請求次數
用最新的async函數語法實現.代碼簡潔明了.
測試代碼如下:
function foo(param) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      try {
        JSON.parse('{{'); // 執行到這里會報錯
        return resolve(param);
      } catch (err) {
        return reject(err);
      }
    }, 1000);
  });
}
  /**
  * 接口請求重試
  * @param {num} retryMax 請求次數
  */
async function autoRetry(retryMax) {
  try {
    if (retryMax <= 0) {
      return 'error';
    }
    let res = await foo(1)
    return res;
  } catch (error) {
    return autoRetry(retryMax - 1);
  }
}
autoRetry(3)
  .then(result => {
    console.log('result', result.data);
  })
  .catch(err => {
    console.log('err', err);
  });

 foo函數是用來模擬請求的,返回promise對象
正式用法如下:

const axios = require('axios');
/**
 * 接口請求重試
 * @param {num} retryMax  請求次數
 */
async function autoRetry(retryMax) {
  try {
    if (retryMax <= 0) {
      return 'error';
    }
    let res = await axios.get('http://dfsports_h5.dftoutiao.com/dfsports_h5/newspool?type=nba&typecode=900047&pgnum=1')
    return res;
  } catch (error) {
    return autoRetry(retryMax - 1);
  }
}

 await axios.get()這個方法還可以封裝一下,用參數傳遞,可以應對不同的請求方法.
也可以引入node-retry ,
retry等...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM