请问有没有办法用vue或者原生JS将多个页面统一进行防止重复执行点击事件(在不侵入源事件方法的前提下,因为页面太多是在改不过来),或者进行统一节流处理
4条回答 默认 最新
- 技术专家团-剑客 2021-09-23 14:44关注
如果点击事件都有axios请求,你防止的是重复的后端请求,如果是vue单页面项目可以考虑如下的方案:
1,取消重复请求,具体方法如下,基本思路是缓存,请求结束之后清空缓存/** * 全部请求拦截器处理 */ const pendingRequests = new Map() myAjax.interceptors.request.use(function (config) { const params = config.params || config.data const requestKey = `${config.url}/${JSON.stringify(params)}&request_type=${config.method}` if (pendingRequests.has(requestKey)) { config.cancelToken = new axios.CancelToken((cancel) => { // cancel 函数的参数会作为 promise 的 error 被捕获 cancel(`重复的请求被主动拦截: ${requestKey}`) }) } else { pendingRequests.set(requestKey, config) config.requestKey = requestKey } return config }, function (error) { pendingRequests.clear() return Promise.reject(error) } ) /** * 响应拦截器 */ myAjax.interceptors.response.use(response => { const requestKey = response.config.requestKey pendingRequests.delete(requestKey) return response }, error => { pendingRequests.clear() return Promise.reject(error) })
或者将问题阐述具体一些。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 基于OPENCV的人脸识别
- ¥20 51单片机学习中的问题
- ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
- ¥15 Python中knn问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!