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 相关文章推荐
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 Javascript
JS实现点击链接取消跳转效果的方法
Jan 24 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
整理JavaScript创建对象的八种方法
Nov 03 Javascript
js 实现数值的千分位及保存小数方法(推荐)
Aug 01 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
基于vue、react实现倒计时效果
Aug 26 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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默认安装产生系统漏洞
2006/10/09 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php程序内部post数据的方法
2015/03/31 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
pytest中文文档之编写断言
2019/09/12 Python
wxpython布局的实现方法
2019/11/01 Python
新手学python应该下哪个版本
2020/06/11 Python
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
运动会通讯稿300字
2014/02/02 职场文书
音乐专业自荐信
2014/02/07 职场文书
产品推广策划方案
2014/05/10 职场文书
工商干部先进事迹
2014/05/14 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
教你nginx跳转配置的四种方式
2022/07/07 Servers