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 相关文章推荐
让iframe自适应高度(支持XHTML,支持FF)
Jul 24 Javascript
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
Jquery插件之多图片异步上传
Oct 20 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
Aug 06 Javascript
js的2种继承方式详解
Mar 04 Javascript
jquery根据锚点offset值实现动画切换
Sep 11 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
Node.js log4js日志管理详解
Jul 31 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
Vue实现背景更换颜色操作
Jul 17 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
Vue实现动态查询规则生成组件
May 27 Vue.js
微信小程序实现跑马灯效果
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 魔术函数使用说明
2010/02/21 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
php技巧小结【推荐】
2017/01/19 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JavaScript版代码高亮
2006/06/26 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
Python实现从百度API获取天气的方法
2015/03/11 Python
Python读写ini文件的方法
2015/05/28 Python
python简单读取大文件的方法
2016/07/01 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
本科生详细的自我评价
2013/09/19 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
主题党日活动总结
2014/07/08 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
pandas数值排序的实现实例
2021/07/25 Python
python数据处理之Pandas类型转换
2022/04/28 Python