vue axios请求频繁时取消上一次请求的方法


Posted in Javascript onNovember 10, 2018

一、前言

在项目中经常有一些场景会连续发送多个请求,而异步会导致最后得到的结果不是我们想要的,并且对性能也有非常大的影响。例如一个搜索框,每输入一个字符都要发送一次请求,但输入过快的时候其实前面的请求并没有必要真的发送出去,这时候就需要在发送新请求的时候直接取消上一次请求。

二、代码

<script>
import axios from 'axios'
import qs from 'qs'

export default {
  methods: {
    request(keyword) {
      var CancelToken = axios.CancelToken
      var source = CancelToken.source()
       
      // 取消上一次请求
      this.cancelRequest();
      
      axios.post(url, qs.stringify({kw:keyword}), {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'Accept': 'application/json'
        },
        cancelToken: new axios.CancelToken(function executor(c) {
          that.source = c;
        })
      }).then((res) => {
        // 在这里处理得到的数据
        ...
      }).catch((err) => {
        if (axios.isCancel(err)) {
          console.log('Rquest canceled', err.message); //请求如果被取消,这里是返回取消的message
        } else {
          //handle error
          console.log(err);
        }
      })
    },
    cancelRequest(){
      if(typeof this.source ==='function'){
        this.source('终止请求')
      }
    },
  }
}
</script>

三、结语

这样就可以成功取消上一次请求啦!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript使用cookie
Feb 02 Javascript
优化javascript的执行速度
Jan 23 Javascript
自己动手开发jQuery插件教程
Aug 25 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
微信小程序实现跑马灯效果
Oct 21 #Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 #Javascript
vue.js自定义组件directives的实例代码
Nov 09 #Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 #Javascript
webpack 静态资源集中输出的方法示例
Nov 09 #Javascript
vue中如何去掉空格的方法实现
Nov 09 #Javascript
Vue press 支持图片放大功能的实例代码
Nov 09 #Javascript
You might like
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
Python实现端口复用实例代码
2014/07/03 Python
python的类方法和静态方法
2014/12/13 Python
python处理html转义字符的方法详解
2016/07/01 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
python3实现猜数字游戏
2020/12/07 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python操作qml对象过程详解
2019/09/26 Python
python 写一个性能测试工具(一)
2020/10/24 Python
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
简历的自荐信
2013/12/19 职场文书
大学自我鉴定
2013/12/20 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
自我检讨书怎么写
2015/05/07 职场文书
音乐课外活动总结
2015/05/09 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
MySql新手入门的基本操作汇总
2021/05/13 MySQL
一文搞懂python异常处理、模块与包
2021/06/26 Python
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL