需要在axios配置里面加上以上代碼。
```
letpending=[];//聲明一個(gè)數(shù)組用于存儲(chǔ)每個(gè)ajax請(qǐng)求的取消函數(shù)和ajax標(biāo)識(shí)
letcancelToken=axios.CancelToken;
letremovePending=(config)=>{
for(letpinpending) {
if(pending[p].u===config.url+'&'+config.method) {//當(dāng)當(dāng)前請(qǐng)求在數(shù)組中存在時(shí)執(zhí)行函數(shù)體
pending[p].f();//執(zhí)行取消操作
pending.splice(p,1);//把這條記錄從數(shù)組中移除
}
}
}
letcutReq=(config)=>{
for(letpinpending) {
if(pending[p].u===config.url+'&'+config.method) {//當(dāng)當(dāng)前請(qǐng)求在數(shù)組中存在時(shí)執(zhí)行函數(shù)體
returntrue;
}
}
}
//添加請(qǐng)求攔截器
axios.interceptors.request.use(config=>{
letflag=cutReq(config);
if(flag===true)returnnull;//當(dāng)上一次相同請(qǐng)求未完成時(shí)牲迫,無(wú)法進(jìn)行第二次相同請(qǐng)求
config.cancelToken=newcancelToken((c)=>{
//這里的ajax標(biāo)識(shí)我是用請(qǐng)求地址&請(qǐng)求方式拼接的字符串,當(dāng)然你可以選擇其他的一些方式
pending.push({u:config.url+'&'+config.method,f:c});
});
returnconfig;
},error=>{
returnPromise.reject(error);
});
//添加響應(yīng)攔截器
axios.interceptors.response.use(res=>{
removePending(res.config);//在一個(gè)ajax響應(yīng)后再執(zhí)行一下取消操作勾哩,把已經(jīng)完成的請(qǐng)求從pending中移除
returnres;
},error=>{
return{data:{} };
});
```