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 相关文章推荐
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 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输入流php://input实例讲解
2015/12/22 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
JS实现匀速运动的代码实例
2013/11/29 Javascript
移动节点的jquery代码
2014/01/13 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
你应该知道的python列表去重方法
2017/01/17 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
培训讲师邀请函
2014/01/10 职场文书
学生会招新策划书
2014/02/14 职场文书
白岩松演讲
2014/05/21 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
金秋助学感谢信
2015/01/21 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang
无线电知识基础入门篇
2022/02/18 无线电
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL