需要在axios配置里面加上以上代码。
```
letpending=[];//声明一个数组用于存储每个ajax请求的取消函数和ajax标识
letcancelToken=axios.CancelToken;
letremovePending=(config)=>{
for(letpinpending) {
if(pending[p].u===config.url+'&'+config.method) {//当当前请求在数组中存在时执行函数体
pending[p].f();//执行取消操作
pending.splice(p,1);//把这条记录从数组中移除
}
}
}
letcutReq=(config)=>{
for(letpinpending) {
if(pending[p].u===config.url+'&'+config.method) {//当当前请求在数组中存在时执行函数体
returntrue;
}
}
}
//添加请求拦截器
axios.interceptors.request.use(config=>{
letflag=cutReq(config);
if(flag===true)returnnull;//当上一次相同请求未完成时,无法进行第二次相同请求
config.cancelToken=newcancelToken((c)=>{
//这里的ajax标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
pending.push({u:config.url+'&'+config.method,f:c});
});
returnconfig;
},error=>{
returnPromise.reject(error);
});
//添加响应拦截器
axios.interceptors.response.use(res=>{
removePending(res.config);//在一个ajax响应后再执行一下取消操作,把已经完成的请求从pending中移除
returnres;
},error=>{
return{data:{} };
});
```