axios,二次请求的时候,取消第一次发出的请求

Posted hamili

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axios,二次请求的时候,取消第一次发出的请求相关的知识,希望对你有一定的参考价值。

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 =>
removePending(config) //在一个ajax发送前执行一下取消操作
config.cancelToken = new cancelToken(c =>
// 这里的ajax标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
pending.push( u: config.url + ‘&‘ + config.method, f: c )
)
return config
,
error =>
return Promise.reject(error)
)

//添加响应拦截器
axios.interceptors.response.use(
response =>
removePending(response.config) //在一个ajax响应后再执行一下取消操作,把已经完成的请求从pending中移除
return response
,
error =>
return data: // 返回一个空对象,主要是防止控制台报错
)

以上是关于axios,二次请求的时候,取消第一次发出的请求的主要内容,如果未能解决你的问题,请参考以下文章

vue 第一次axios请求得到一个数组,然后根据循环数组获得id进行第二次axios请求,请问如何处理速度最快?

React - 实现fetch取消、中止请求

axios 的理解和使用 axios.create(对axios请求进行二次封装) 拦截器 取消请求(axios.CancelToken)

axios取消功能的设计与实现

vue路由变化时使用axios取消所有请求

防止 axios/fetch 重定向