vue项目路由跳转后上一页面未完成的接口取消请求

vue项目路由跳转后上一页面未完成的接口取消

一、 需求

在路由跳转后,如果上一个页面未完成的接口请求,需要取消掉。
比如: 页面A请求接口A,页面B请求接口B。从页面A跳转到页面B,如果接口A未完成,需要取消掉(尤其是点击过快的情况下,还会出现本地缓存的参数被新页面参数替换的情况)。

二、 实现思路

两种方法可以实现:
1. 使用 cancelToken 取消请求
2. 使用内置的 AbortController 取消请求

两种方法思路基本一致,只是代码编辑方面有点不同;在axios的请求拦截器中收集所有发送的接口,存储在vuex的一个数组中,然后在router.beforeEach中(或点击事件中)监听到路由跳转,就把该数组中的所有未完成的请求取消。

三、 代码实现

1. 在store中创建添加请求到数组中,和把数组中请求清空的方法

const state = {clearPmsArr: [], // 取消请求方法数组
};const mutations = {pushPmsStack(state, payload) {state.clearPmsArr.push(payload.clearPms);},clearPmsStack({ clearPmsArr }) {clearPmsArr.forEach((item) => {// 使用 cancelToken 取消请求// item("路由跳转取消之前页面请求请求");// 使用内置的 AbortController 取消请求item.abort("路由跳转取消之前页面请求请求")});clearPmsArr = [];},
};export default {namespaced: true,state,mutations,
};

2. 在axios的请求拦截器中收集发送的请求,调用store的方法;存入对应需要取消的请求方法;在响应拦截器拦截下来 不抛出错误

// 公司将 Axios 进行了一次封装 自己在请求和响应拦截中写上就好
class HttpService extends HttpLib {// 请求拦截器requestBefore(config) {config = {...config,}// 使用 cancelToken 取消请求// store.commit("pmsStack/pushPmsStack", { clearPms: super.cancel });// 使用内置的 AbortController 取消请求const controller = new AbortController();config.signal = controller.signal;// 存入取消请求的 函数;用于切换页面时取消请求store.commit("pmsStck/pushPmsStack", { clearPms: controller });// ...代码省略return super.requestBefore(config)}// 在响应拦截器拦截下来 不抛出错误responseFailed(error) {if(error.name && error.name === "CanceledError"){// 取消请求的情况下,终端Promise调用链return new Promise(() => {});}return new Promise((resolve, reject) => {super.responseFailed(error).catch((e) => {...})})}
}

3. 在路由跳转前(或方法中)取消请求

store.commit("pmsStack/clearPmsStack")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML旋转照片盒子

效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content…

世界的本质是旋转(9) 利用声波传输mFSK多音调频文本

在上一篇文章中 &#xff0c;主要介绍的是使用专用的业余无线电设备传输调相波形。 对于买不起SDR设备的学生来说&#xff0c;可以使用这篇文章介绍的思路&#xff0c;使用声卡的数据线传输IQ路的基带数据。线路输入的好处&#xff1a; 不经过空气的媒介&#xff0c;波形的本…

江苏省汽车及零部件产业协作配套对接会在苏州举行

5月28日&#xff0c;江苏省汽车及零部件产业协作配套对接会暨“百场万企”大中小企业融通对接活动在苏州举办。本次活动以“深化整零协作&#xff0c;促进大中小企业融通发展”为主题&#xff0c;由江苏省工业和信息化厅、中国中检所属中国汽车工程研究院股份有限公司&#xff…

分享7个手机上堪称神器却鲜为人知的小众宝藏软件

分享7个手机上堪称神器却鲜为人知的小众宝藏软件&#xff0c;保证大家用过就舍不得卸载~ 1.志愿大师 马上就是高考季了&#xff0c;高考完的同学如果不知道该如何选专业&#xff0c;可以用这个软件来分析各个大学和专业设置等信息。 志愿大师是一款专为高考后学生设计的高效辅…

Others - 网友都是些人才,哈哈哈哈

感谢万能的网友们&#xff01; 原本枯燥的知识&#xff0c;在网友生动形象的表达下&#xff0c;也能简单易懂&#xff0c;哈哈哈哈

Prometheus+Altermanager实现钉钉告警

PrometheusAltermanager实现钉钉告警 Prometheus和Altermanager的安装这里就不赘述了&#xff0c;我之前的文章有写到 不记得的小伙伴可以去看看Prometheus和Altermanager的安装使用 直接开始上操作 下载钉钉并打开&#xff0c;先创建一个接收告警信息的钉钉群 添加一个自定…

【Nacos_bugs】java.lang.IllegalStateException: Failed to load ApplicationContext

报错原因 找不到配置文件。 Bug 排查 如果使用 Nacos 管理配置文件&#xff0c;需要检查本地 bootstrap.yml 配置是否出现问题&#xff1a; 检查点&#xff1a; 检查 Nacos 服务的地址有没有配置错误&#xff0c;如上图 ①&#xff0c;格式严格为 IP:端口号" 检查 D…

Ant Design Vue Pro流程分析记录

一、基本介绍 Ant Design Vue Pro提供了一套完整的解决方案&#xff0c;包括路由、状态管理、UI组件库、HTTP请求封装等&#xff0c;方便开发者快速搭建和维护企业级应用。 二、官网地址 Ant Design Pro of Vue 三、下载及安装 推荐使用Yarn 四、文件分布及说明 dist&#xf…

常见Rabbitmq面试题及答案总结

1、 什么是 rabbitmq 釆用AMQP高级消息队列协议的一种消息队列技术撮大的特点就是消费并不需要 确保提供方存在,实现了服务之间的高度解耦 2、 为什么要使rabbitmq &#xff08;1&#xff09; 在分布式系统下具备异步&#xff0c;削峰&#xff0c;负载均衡等一系列高级功能&…

企业百度百科如何修改

百度百科是一个可以让我们快速的了解一个企业情况的地方&#xff0c;同时也让我们的企业展示了什么&#xff0c;还有哪些是可以做的。 注册与登录 首先&#xff0c;你需要注册一个百度账号&#xff0c;并通过邮箱或手机进行验证。登录后&#xff0c;可以开始创建或编辑百度百科…

Leetcode - 周赛400

目录 一&#xff0c;3168. 候诊室中的最少椅子数 二&#xff0c;3169. 无需开会的工作日 三&#xff0c;3170. 删除星号以后字典序最小的字符串 四&#xff0c;3171. 找到按位与最接近 K 的子数组 一&#xff0c;3168. 候诊室中的最少椅子数 本题是一道模拟题&#xff0c;直…

归并排序法

归并排序法是典型的分治算法应用&#xff0c;1946年由冯.诺伊曼发明。 算法思路&#xff1a;归并排序算法有两个基本操作&#xff0c;一是分&#xff0c;也就是把原数组划分成两个子数组的过程&#xff0c;另一个是治&#xff0c;它将两个有序数组合并成一个更大的有序数组。 …

基于小波区间相关的信号降噪方法(MATLAB 2021B)

在我们处理信号过程中最重要的任务就是找到信号隐藏的规律和信号的特征。常用的傅里叶分析法只能用于在时间域或者频率域上分析信号&#xff0c;而通常的数据会在时间域和频率域均有特征。而小波分析是继傅里叶分析之后的一大突破性创新&#xff0c;也是近年来在学术界非常热门…

JMeter源码解析之NewDriver.java(一)

JMeter源码解析之NewDriver.java&#xff08;一&#xff09; NewDriver.java主要作用 JMeter程序入口&#xff1a;JMeter的主类-设置初始类路径和加载程序。 文件路径 路径地址&#xff1a;…\apache-jmeter-5.1\src\core\org\apache\jmeter\NewDriver.java 文章重点关于s…

扩散世界模型已训练出赶超人类的智能体?

论文标题&#xff1a; Diffusion for World Modeling:Visual Details Matter in Atari 论文作者&#xff1a; Eloi Alonso, Adam Jelley, Vincent Micheli, Anssi Kanervisto, Amos Storkey, Tim Pearce, Franois Fleuret 项目地址&#xff1a; https://github.com/eloial…

【大数据】StarRocks的四种数据模型

通过上一篇博客&#xff08;【大数据】初步认识StarRocks&#xff09;&#xff0c;我们对StarRocks有了一个简单的认识&#xff0c;这边博客呢&#xff0c;我们主要来学习下StarRocks的四种数据模型&#xff1a;明细模型 (Duplicate Key Model)、聚合模型 (Aggregate Key Model…

2024-5-12——吃掉 N 个橘子的最少天数

2024-5-12 题目来源我的题解方法一 深度搜索 超时方法二 动态规划 超内存方法三 灵神题解 题目来源 力扣每日一题&#xff1b;题序&#xff1a;1553 我的题解 方法一 深度搜索 超时 直接使用深度搜索&#xff0c;每次选择一种策略&#xff0c;然后判断最小值 class Solution…

PostgreSQL 修改表结构卡住不动

目录 1 问题2 实现 1 问题 今天遇到的一个问题记录一下&#xff0c;因为系统上的一个改动需要同步脚本至测试库上&#xff0c;具体的脚本内容也很简单,就是修改了某张表的一个字段。但是无论怎么操作都是一直卡住&#xff0c;表的数据量很小就十几条数据所以初步怀疑是表被锁了…

基于EBAZ4205矿板的图像处理:10gamma变换

基于EBAZ4205矿板的图像处理&#xff1a;10gamma变换 项目全部文件 会上传项目全部文件&#xff0c;如果没传&#xff0c;可以私信催我一下&#xff0c;最近太忙了 先看效果 我的项目中的gamma的变换系数为2.2&#xff0c;是会让图像整体变暗的&#xff0c;看右图说明我的ga…

CPVT(ICLR 2023)论文解读

paper&#xff1a;Conditional Positional Encodings for Vision Transformers official implementation&#xff1a;GitHub - Meituan-AutoML/CPVT 存在的问题 位置编码的局限性&#xff1a;传统Transformer中的绝对位置编码&#xff08;无论是可学习的还是固定的&#xff…