axios 请求错误重复请求
一、实现:
import axios from "axios";
import type { InternalAxiosRequestConfig, AxiosResponse, AxiosInstance } from "axios";
// 创建Axios实例
const axiosInstance: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_BASE_URL,
timeout: 60000 // 延时时间:60s
});
// 请求拦截器
axiosInstance.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 响应拦截器
axiosInstance.interceptors.response.use(
(response: AxiosResponse) => {
return response.data;
},
async (error) => {
let config = error.config;
// 错误重试
if (config.errorRetry) {
const retryTotal: number = config.retryTotal || 3;
const retryCount: number = config.retryCount || 0;
if (retryCount < retryTotal) {
ElMessage.warning(`请求失败,正在进行第${retryCount + 1}次尝试重新请求...`);
await new Promise((resolve) => setTimeout(resolve, 1000));
config.retryCount = retryCount + 1;
return axiosInstance(config);
}
}
ElMessage.error("未知错误,请联系管理员!");
return Promise.reject(error);
}
);
export default axiosInstance;
二、使用:
import request from "@/utils/request";
// 登录
export const getLogin = (data?: any) => {
return request({
url: "/user/login",
method: "post",
data,
errorRetry: true,
retryTotal:3,
});
};
本文来自博客园,作者:小周同学~,转载请注明原文链接:https://www.cnblogs.com/xiaozhou-wuyu/p/19199501

浙公网安备 33010602011771号