axios配置请求失败时的拦截器,用于当请求失败时重新发送请求,或者提示

本文介绍了一个基于Axios的请求重试机制实现,通过配置重试次数、延迟时间及超时请求处理,确保网络不稳定时请求的成功率。文章详细解释了如何在Axios实例中设置重试参数,并在请求失败时自动进行重试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import Axios from "axios";

import { API_ROOT, CONTENT_TYPE } from "./config";

// 创建axios实例对象

const REQUEST = Axios.create();

// 配置axios实例对象初始路径

REQUEST.defaults.baseURL = API_ROOT;

REQUEST.defaults.headers.post["Content-Type"] = CONTENT_TYPE;

// 请求失败重试次数

REQUEST.defaults.retry = 4;

// 请求重试延迟

REQUEST.defaults.retryDelay = 1000;

// 超时请求机制(未使用)

REQUEST.interceptors.response.use(undefined, function axiosRetryInterceptor(
  err
) {
  var config = err.config;

  // 如果配置不存在或未设置重试选项,则拒绝

  if (!config || !config.retry) return Promise.reject(err);

  // 设置变量以跟踪重试次数

  config.__retryCount = config.__retryCount || 0;

  // 检查我们是否已经注销了总重试次数

  if (config.__retryCount >= config.retry) {
    // 剔除错误

    return Promise.reject(err);
  }

  // 增加重试次数

  config.__retryCount += 1;

  // 创建新的异步对象来处理重试请求

  var backoff = new Promise(function(resolve) {
    setTimeout(function() {
      resolve();
    }, config.retryDelay || 1);
  });

  /**
  
  *
  
  Return the promise in which recalls axios to retry the request
  
  返回调用AXIOS来重试请求
  
  *
  
  * */

  return backoff.then(function() {
    return axios(config);
  });
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值