说明: 参考网上 import axios from 'axios' let service = axios.create({ baseUrl: '', timeout: 10000 }) let pending = []; //声明一个数组用于存储每个ajax请求的取消函数和ajax标识 let cancelToken = axios.CancelToken; let removePending = (config) => { for(let p in pending){ if(pending[p].u === config.url + '&' + config.method) { //当前请求在数组中存在时执行函数体 pending[p].f(); //执行取消操作 pending.splice(p, 1); //把这条记录从数组中移除 } } }
axios.interceptors.request.use(config => {
let str_data = JSON.stringify(config.data || '{}'); // 参数中携带cancelHttp,不防止多次请求
if (str_data.indexOf("cancelHttp") > -1) {
httpFlag = false
}else {
removePending(config); //在一个ajax发送前执行一下取消操作
// 这里的ajax标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
config.cancelToken = new cancelToken((c)=>{
pending.push({ u: config.url + '&' + config.method, f: c });
});
}
return config
},error=> {
return Promise.reject(error)
})
let httpFlag = true
axios.interceptors.response.use(response =>{
if (httpFlag) {
removePending(response.config)
}
})