调用的每一个接口都要绑定一个loading真的很烦。
let apiList = []; // 存储请求的接口
api.interceptors.request.use(
request => {
let {interfaceLoading,whiteList} = store.state.global
// 启动全局loding
if(whiteList.indexOf(request.url) > -1 && !interfaceLoading){
store.commit('global/setInterfaceLoading',true)
// 记录请求接口,用于判断何时取消loading
apiList.push(request.url)
}
return request
}
)
api.interceptors.response.use(
response => {
// 清除请求地址,清空则取消loading
let index = apiList.findIndex((item)=>item===response.config.url)
if(index!==-1){
apiList.splice(index,1)
}
if(apiList.length===0){
store.commit('global/setInterfaceLoading',false)
}
// 以下为处理返回数据结果
if (response.data) {
if (response.data.status === 200) {
return Promise.resolve(response.data)
}
else if (response.data.errorType) {
// alert.typeOne('error',response.data.msg)
return Promise.resolve(response.data)
} else {
// 请求成功并且没有报错
return Promise.resolve(response.data)
}
} else {
toLogin()
}
}
)