使用axios查询失败后,再次重复发起请求

Jiafeng

分类: axios 282 0

今天在做项目时遇到由于对接数据方的平台不稳定,导致查询他们数据时,可能查询失败。

为了尽量规避这种问题,于是需要在请求失败后,能够再次发起请求,试图保证数据展示的效果。

/**
 * 响应拦截器
 */
let retry = 4; // 重查次数设置
let retryDelay = 1000; // 重查延时ms
axios.interceptors.response.use(
  response => {
    if (response.data.code == -1) {
      // sql 查询出错时返回 -1
      // 添加请求次数系数
      response.config.requestCount = response.config.requestCount || 1;
      // 当前请求次数小于 重查次数,则执行重新查询
      if (response.config.requestCount < retry) {
        response.config.requestCount++; // 执行重查后,系数+1
        let backoff = new Promise(resolve => {
          setTimeout(() => {
            resolve();
          }, retryDelay || 100);
        });
        return backoff.then(() => {
          return axios(response.config);
        });
      } else {
        return response;
      }
    } else {
      return response;
    }
  },
  error => {
    // 错误
    console.log(error);
    return Promise.reject(error);
  }
);
  • 我们这里是通过后台连接的,所以是在resopnse中做的处理,若朋友们是直接连接问题导致的查询失败,也可以将其放到 error中进行同样的处理即可。-
  • 0人 Love
  • 0人 Haha
  • 0人 Wow
  • 0人 Sad
  • 0人 Angry
axios

作者简介: Jiafeng

共 0 条评论关于 “使用axios查询失败后,再次重复发起请求”

Loading...