axios 重复请求

代码截图

需要在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:{} };

});

```



使用axios如何取消重复请求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容