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代码
Sep 15 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
Vue页面渲染中key的应用实例教程
Jan 12 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+DBM的同学录程序(2)
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
客户端静态页面玩分页
2006/06/26 Javascript
javascript编程起步(第七课)
2007/01/10 Javascript
用javascript实现自定义标签
2007/05/08 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python能做什么 python的含义
2019/10/12 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
客服实习的个人自我鉴定
2013/10/20 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
五水共治一句话承诺
2014/05/30 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
就业推荐表导师评语
2014/12/31 职场文书
小爸爸观后感
2015/06/15 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
Redis唯一ID生成器的实现
2022/07/07 Redis