iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >vue中axios如何实现重复点击取消上一次请求封装
  • 472
分享到

vue中axios如何实现重复点击取消上一次请求封装

2024-04-02 19:04:59 472人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“Vue中axiOS如何实现重复点击取消上一次请求封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中axios如何实现重复点击取

这篇文章主要为大家展示了“Vue中axiOS如何实现重复点击取消上一次请求封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中axios如何实现重复点击取消上一次请求封装”这篇文章吧。

使用场景

重复点击或者多tab标签使用一个视图等(当然也可以用加载中或者透明背景禁止请求中再次点击)

封装代码

来自于互联网

let pending = []; //声明一个数组用于存储每个请求的取消函数和axios标识
let cancelToken = axios.CancelToken;
let removePending = (config) => {
 for(let p in pending){
  if(pending[p].u === config.url + '&' + config.method) { //当当前请求在数组中存在时执行函数体
   pending[p].f(); //执行取消操作
   pending.splice(p, 1); 
  }
 }
}

// Http请求拦截器
axios.interceptors.request.use(config => {

 removePending(config); //在一个axios发送前执行一下取消操作
 config.cancelToken = new cancelToken((c)=>{
  // 这里的axios标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
  pending.push({ u: config.url + '&' + config.method, f: c }); 
 });
 
 return Promise.resolve(config)
}, error => {
 return Promise.reject(error)
})

// http响应拦截器
axios.interceptors.response.use(data => { 
 
 removePending(data.config); //在一个axios响应后再执行一下取消操作,把已经完成的请求从pending中移除
 
 return Promise.resolve(data)
 
}, error => {
 //加载失败
 return {'data':{}}
 // return Promise.reject(error)
})

经过多次测试发现不同请求也给我取消了,原因是没有校验请求参数,也就是说get请求可以用,修改以下代码

pending.push({ u: config.url + '&' + config.method, f: c });

修改为:

pending.push({ u: config.url + JSON.stringify(config.data) +'&' + config.method, f: c });//config.data为请求参数

上面判断也需要修改,这样get请求和post都可以用了

解决分析

(个人理解)

官方提供了axios.CancelToken来取消上一次请求方法,因此只需要判断上一次请求是否重复。声明数组变量 pending用于存储每个请求实例的axios标识(请求方式,请求参数,请求url)和该实例的取消函数;在请求拦截器中创建取消函数实例,将请求的标识(判断重复标识)及 该请求实例取消函数 push到pending数组中,创建取消上一次请求方法 removePending,该方法主要判断axios请求标识是否重复,重复则执行该实例的取消函数,并且从 pending中移除标识及该实例取消函数。

以上是“vue中axios如何实现重复点击取消上一次请求封装”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网html频道!

--结束END--

本文标题: vue中axios如何实现重复点击取消上一次请求封装

本文链接: https://www.lsjlt.com/news/68252.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue中axios如何实现重复点击取消上一次请求封装
    这篇文章主要为大家展示了“vue中axios如何实现重复点击取消上一次请求封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中axios如何实现重复点击取...
    99+
    2024-04-02
  • vue怎么实现重复点击取消上一次请求封装
    本篇内容主要讲解“vue怎么实现重复点击取消上一次请求封装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现重复点击取消上一次请求封装”吧!使用场景重复点击或者多tab标签使用一个视图...
    99+
    2023-07-04
  • vue禁止重复点击发送多次请求如何实现
    本篇内容介绍了“vue禁止重复点击发送多次请求如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!某些情况下,为了阻止用户短时间内重复点击...
    99+
    2023-07-05
  • vue 禁止重复点击发送多次请求的实现
    目录1.通过控制 loading 来设置 loading,或者 disabled2.使用Vue自定义指令3. 使用debounce函数4.最终解决方案lodash某些情况下,为了阻止...
    99+
    2023-03-06
    vue 禁止重复点击 vue 发送多次请求
  • Vue项目中如何封装axios(统一管理http请求)
    1、需求说明 在使用Vue.js框架开发前端项目时,会经常发送ajax请求服务端接口,在开发过程中,需要对axios进一步封装,方便在项目中的使用。 2、Vue项目结构 在本地创...
    99+
    2024-04-02
  • jQuery如何实现radio第一次点击选中第二次点击取消功能
    这篇文章主要为大家展示了“jQuery如何实现radio第一次点击选中第二次点击取消功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何实现rad...
    99+
    2024-04-02
  • vue如何实现点击选中取消切换
    目录vue点击选中取消切换vue点击选中,再次点击取消举个栗子vue点击选中取消切换 html <el-button @click="searchStatisticsInfo(...
    99+
    2024-04-02
  • 微信二次开发中使用Java如何实现一个微信文本消息的请求与发送
    今天就跟大家聊聊有关微信二次开发中使用Java如何实现一个微信文本消息的请求与发送,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一步:新建包com.wtz.message.resp...
    99+
    2023-05-31
    java 二次开发
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作