当前位置: 首页 > backend >正文

【axios取消请求】如何在token过期后取消未响应的请求

功能背景:

我们在实际项目中通常会遇到登录过期后会跳登录页的情况,回跳过程会根据接口请求的状态码判断是否登陆状态过期,并给出用户提示,如果此时存在多个请求接口同时调用,就会同时报出多个登录过期的提示,如何避免多个提示同时报出的情况呢?那我们就需要用到取消接口请求的功能

方法:

我们基于axios提供的AbortController对象(fetch提供的原生API)来实现这一功能

步骤:

1.创建接口请求映射表
let abortControllers = new Map()
2.在请求拦截器中存储键值对
Axios.interceptors.request.use((config) => {const controller = new AbortController()const signal = controller.signalconst requestKey = `${config.url}`// 请求地址与控制器绑定abortControllers.set(requestKey, controller)config.metadata = { signal, requestKey } // 自定义字段用于存储return config},(error) => {return Promise.reject(error.data.error.message)}
)
3.响应拦截其中判断是否过期
Axios.interceptors.response.use((res) => {if (res.status === 200) {if (res.data.code == '10008') {ElMessage.warning('登录已过期,请重新登录!')// 取消所有还未执行的接口请求abortControllers.forEach((controller) => controller.abort())abortControllers.clear() // 清空控制器映射router.push('/login')return} else {// 完成的接口在映射表中删除const requestKey = `${res.config.url}`abortControllers.delete(requestKey)return res.data}}},(error) => {// 出错的接口在映射表中删除const requestKey = `${error.config.url}`abortControllers.delete(requestKey)return Promise.reject(error.response.status)}
)
http://www.xdnf.cn/news/1609.html

相关文章:

  • 针对密码学的 EM 侧信道攻击
  • git 操作
  • Golang编程拒绝类型不安全
  • 嵌入式人工智能应用-第三章 opencv操作8 图像特征之 Haar 特征
  • springboot整合redis实现缓存
  • 协作开发攻略:Git全面使用指南 — 第二部分 高级技巧与最佳实践
  • 无标注文本的行业划分(行业分类)算法 —— 无监督或自监督学习
  • 【TensorFlow深度学习框架】从数学原理到工业级应用
  • 硬件工程师面试常见问题(7)
  • 【GIT】github中的仓库如何删除?
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite验收用户名和密码
  • 从指标定义到可视化:基于衡石指标平台的全链路数据治理实战
  • 4.1.1 类的序列化与反序列化(XmlSerializer)
  • 一文走进GpuGeek | 模型调用
  • Python 面向对象练习
  • 探秘 FFmpeg 版本发展时间简史
  • SpringMVC处理请求映射路径和接收参数
  • 配置RSUniVLM环境(自用)
  • [特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解
  • IDEA启动报错Failed to create JVM. JVM path的解决办法
  • (51单片机)LCD展示动画(延时函数)(LLCD1602教程)
  • 2025最新系统 Linux 教程(六)
  • Puter部署指南:基于Docker的多功能个人云平台掌控自己的数据
  • uniapp-商城-34-shop 购物车 选好了 进行订单确认
  • java—12 kafka
  • Kubernetes(K8S)入门阶段详细指南
  • 微信小程序根据图片生成背景颜色有效果图
  • 并发设计模式实战系列(6):读写锁
  • 【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建
  • 开源交易所源码,交易所开发