原因在于loading展示时机没有考虑到多个接口短时间内同时请求的情况
/* eslint-disable no-unused-vars */
import axios from 'axios'
import store from '@/store/index';
let reqCount = 0;
function addReqCount(){
// 计数器累加
// 每一次请求就加1,只要大于1就展示loading
if(!reqCount){
store.commit('changeIsLoading',true); // 控制展示loading
}
reqCount += 1;
}
function subtractReqCount(){
// 计数器累减
// 每一次请求结束或者请求失败减1,只要等于0就取消loading
reqCount--;
if(!reqCount){
store.commit('changeIsLoading',false);
}
}
const instance = axios.create({
baseURL: '',
timeout: 360000,
headers: {
}
})
instance.interceptors.request.use(
config => {
addReqCount();
return config
},
() => {
subtractReqCount();
}
)
//http response 拦截器
instance.interceptors.response.use(
response => {
subtractReqCount();
return response
},
error => {
subtractReqCount();
return Promise.reject(error)
}
)
export default instance