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);
});
});