登录信息失效后多次请求提示合并成一次

在通常的业务场景中经常会出现进入页面之后一次性发送好多个请求,如果登录信息失效,那就会出现很多提示
在这里插入图片描述
类似这种多个提示的,看起来不美观,希望改成可以把在短时间内出现相同的错误信息,只提示一次,其他的就不提示了

实现思路

  1. 通常业务中每一个请求的code都是有具体的意思,可以把每一个请求返回的code昨晚一个key存到map里面
  2. 规定一个时间,在这个时间内重复出现的就不提示了
  3. 每次进来的时候查看map里有没有对应的code值
  4. 没有的话就把code作为键存起来,当前的时间戳作为值
  5. 有的话就进行判断有没有超过之前规定的时间,超过了删除map中对应的code值,然后重新调用一下,重新提示一下
import axios from 'axios';
import { Message } from 'element-ui'// 创建axios实例
const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // api的base_urltimeout: 5000 // 请求超时时间
});// 请求拦截器
service.interceptors.request.use(config => {// 可以在这里添加请求头等信息// if (store.getters.token) {//   config.headers['X-Token'] = getToken();// }return config;},error => {// 请求错误处理console.log(error); // for debugPromise.reject(error);}
);let weakMap = new Map()function tips(response){let {code,msg} = responseconst dealy = 2000// 先查看之前有没有缓存if(weakMap.get(code)){let globalData = weakMap.get(code)let currentData= Date.now();// 如果当前的请求返回的时间超过延时时间,把里面的缓存清除,然后重新提示一下if(currentData - globalData >= dealy){weakMap.delete(code)// 重新提示一下tips(response)}}else{weakMap.set(code, Date.now())Message({message: msg,type: 'error',});}
}// 响应拦截器
service.interceptors.response.use(response => {// 对响应数据做处理,例如只返回data部分const {code,msg} = response.data;console.log(code)tips(response.data)return response;},error => {console.log('err' + error); // for debug// Message({//   message: error.message,//   type: 'error',//   duration: 5 * 1000// });return Promise.reject(error);}
);export default service;

改造完成之后的效果
在这里插入图片描述

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

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

相关文章

【Leetcode每日一题】 递归 - 验证二叉搜索树(难度⭐⭐)(53)

1. 题目解析 题目链接:98. 验证二叉搜索树 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 中序遍历是二叉树遍历中的一种重要方式,它按照左子树、根节点、右子树的顺序访问每个节点。这种方式…

Linux从入门到精通 --- 4(下).网络请求和下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压

文章目录 第四章(下):4.8 网络请求和下载4.8.1 ping4.8.2 wget4.8.3 curl 4.9 端口4.9.1 查看端口占用 4.10 进程管理4.10.1 查看进程4.10.2 查看指定进程4.10.3 关闭进程 4.11 主机状态监控4.11.1 查看系统资源占用4.11.2 top交互式选项4.11.3 磁盘信息监控4.11.4 …

【简单讲解下Lisp的学习历程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【优选算法专栏】专题十六:BFS解决最短路问题(二)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

7.1.4 Selenium 爬取京东商品信息实战

目录 1、实战内容 2、思路 3、分析 url 4、开始操作 1、得到 Cookies 2、访问页面,得到 response 3、解析页面 4、存入 MySQL 5、1-3步总代码 1、实战内容 爬取京东笔记本电脑商品的信息(如:价格、商品名、评论数量),存入 MySQL 中…

使用 AI 生成正则表达式,告别正则烦恼

如果你有处理正则表达式的需求,那么这个网站(autoregex.xyz)一定要收藏好。 可以根据文字描述生成正则表达式。 默认是从文字到正则,不用选择。 输入框中输入描述,点击 ”GO“ 按钮。 等待一会儿,即可生…

数据结构与算法:哈希表

目录 1.哈希表和哈希 1.1.知识引入 1.2.为什么需要哈希表呢? 2.简易的哈希表 2.1.哈希表的基础结构 2.2.如何实现基础的哈希表 2.2.1.增 2.2.2.删 2.2.3.查 2.3.泛型编程下的哈希表 3.简易的哈希桶 1.哈希表和哈希 1.1.知识引入 哈希表(Hash …

11-新热文章-实时计算

热点文章-实时计算 1 今日内容 1.1 定时计算与实时计算 1.2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例 Springboot集成kafkaStream 实时计算 用户行为发送消息 kafkaStream聚合处理消息 更新文章行为数量 替换热点文章数据 2 实时…

网络通信三要素:IP、端口和协议

IP:设备在网络中的地址,是唯一的标识 IP:全程”互联网协议地址“,是分配给上网设备的唯一标志 IP地址有两种形式: IPv4:32位 IPv6:共128位。分成8段表示,每取四位编码成一个16进制…

Linux 5.10 Pstore 功能测试

目录 简介环境配置内核配置参考备注 简介 Pstore(Persistent store support)是用于系统发生oops或panic时,自动保存内核log buffer中的日志。随着功能不断完善,Duo S使用Linux 5.10已经支持保存console日志、ftrace消息和用户空间日志的收集&#xff0c…

Python学习从0开始——007输入与输出

Python学习从0开始——007输入与输出 一、简单输出二、复杂输出2.1引用变量2.2format()函数2.3手动格式化 三、读写文件3.1open()3.2操作文件对象3.3使用 json 保存结构化数据 一、简单输出 str() 函数返回供人阅读的值,repr() 则生成适于解释器读取的值&#xff0…

德兰梅尔:耐高温热销的膜元件亮相2024上海国际生物发酵展

德兰梅尔:耐高温热销的膜元件盛装亮相2024上海国际生物发酵展,8月7-9号上海新国际博览中心与您不见不散! 据了解,从成立至今,德兰梅尔一直专注膜技术、膜产品的开发生产。在中国市场上,德兰梅尔刚步入中国…