return Promise.reject(error.response);
}
);
#### loading 串行、并行
>
> 串行 loading 闪屏、并行 loading 提前关闭
>
>
> * 串行的情况是请求之间的依赖,请求 A 完成后立即开始请求 B,这样会导致 loading 闪屏
> * 并行是两个请求同时请求,请求 A 的时间为 5s,请求 B 的时间为 3s,因为 loading 都是同一个实例,会导致请求 B 时提前关闭 loading,关闭两秒后又请求到了新的数据
>
>
>
import axios from “axios”;
import { Loading, Message } from ‘element-ui’;
const instance = axios.create({
baseURL: “http://localhost:5500”,
timeout: 30000,
});
// 处理并行
let loadingCount = 0;
// 处理串行
let loadingTimer = null;
function loadingClose() {
loadingCount–;
if (!loadingCount) {
// 延迟等待是否还有下一个请求
loadingTimer = setTimeout(() => {
loadingInstance.close();
loadingTimer = null;
}, 300);
}
}
function loadingOpen() {
loadingCount++;
// 如果有请求需要清除关闭
if (loadingTimer) {
clearTimeout(loadingTimer);
loadingTimer = null;
}
loadingInstance = Loading.service({
fullscreen: true,
text: “加载中…”,
background: “black”,
});
}
let loadingInstance = null;
// 添加请求拦截器
instance.interceptors.request.use(
(config) => {
loadingOpen();
return config;
},
(error) => {
Message.error(“请求错误:”