在我的request.js 中 基于axios二次封装
添加
设置默认的重试次数和延迟时间
service.defaults.retry = 2;
service.defaults.retryDelay = 2000;
在响应拦截器里 添加代码 所有经过这里的接口报错都会重试
// 判断是否配置了重试选项
if (config && config.retry) {
// 设置重试次数,默认为3次
config.retryCount = config.retryCount || 0;
if (config.retryCount < config.retry) {
// 增加重试次数
config.retryCount += 1;
// 创建新的Promise,延迟一段时间后进行重试
const retryPromise = new Promise((resolve) => {
setTimeout(() => resolve(service(config)), config.retryDelay || 1000);
});
// 返回重试的Promise
return retryPromise;
}
}
可在我的请求中单独设置请求重试 retry 为0 次接口不重试
import request from "@/utils/request";
// export function plazaList(params, retry = 2, delay = 2000) {
// return request({
// url: "/images/list/plaza",
// method: "GET",
// params,
// retry, // 设置重试次数
// retryDelay: delay, // 设置重试延迟时间
// });
// }
参考代码: axios 请求终极封装【取消重复请求,请求失败自动重试,请求接口数据缓存】 - 掘金 (juejin.cn)