Axios取消请求ajax请求

本文探讨了在Vue应用中,如何在特定场景如抢购和快速切换Tab时,利用Axios有效地取消之前的网络请求,避免无效数据和用户体验问题。重点讲解了Axios中取消请求的实现方法和以往解决方案的不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景

  1. 用户需要快速请求,比如抢购,前一次的请求数据是毫无意义的,直接取消就完事了
  2. 快速切换tab等操作菜单后,如果前一次请求比后一次请求响应慢,数据就会对不上

Axios中的使用

/** index.js */
// 如果前一次请求还未响应,先取消
this.cancel && this.cancel('message')
this.$axios({
       url,
       method,
       // 实例化一个Cancel对象
       cancelToken: new this.$axios.CancelToken(c => {
         // 把取消本次请求的函数赋值到这个组件的 data 中
         this.cancel = c
       })
     })

/** main.js */
// axios 的全局配置
axios.interceptors.response.use(
  res => res,
  err => {
    // 区别用户网络错误和 js 主动取消请求
    !err.toString().includes('Cancel') && Vue.prototype.$message.error(`网络请求错误: ${err}`)
    return Promise.reject(err)
  }
)

以前的方案

  1. 把操作按钮冻结,不给操作,但使用体验偶尔会很糟糕
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值