vue项目中请求完成之前点击按钮开始另一个请求 数据展示错误解决办法

今天公司的项目出了个bug----有一个标签页通过按钮点击发送请求不同数据,前一个请求结束之前点击另一个按钮 数据展示会出现问题 本该第一个接口返回渲染的数据出现在了第二个页面

解决办法:添加全局请求拦截器 在请求拦截器中加上取消请求标识 通过cancelToken方法中断未完成的请求 代码如下——

//-----在封装的axios请求的js文件中-----

window.axiosCancel = []  // 全局定义一个存放取消请求的标识

 //在请求拦截器中加入取消请求标识
  config.cancelToken = new axios.CancelToken(cancel => {
    window.axiosCancel.push({
      cancel
    })
  })

//-----在组件内的使用----------
//在methods中定义cancel方法
cancel(){
    let cancelArr = window.axiosCancel;
    cancelArr = cancelArr || []      //判断空值
    cancelArr.forEach((ele, index) => {
        ele.cancel("取消了请求")  // 在失败函数中返回这里自定义的错误信息
        delete window.axiosCancel[index]
    })
},
//按钮点击事件
handleClick(){
    //------调用请求中断方法-----
    this.cancel()
    //数据请求接口
    getData().then(res =>{})
}

此文章旨在自己记录学习,方便日后查阅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值