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.ajax传递中文参数的解决方法 推荐
Mar 28 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
JavaScript 里的类数组对象
Apr 08 Javascript
js性能优化技巧
Nov 29 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
基于canvas粒子系统的构建详解
Aug 31 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
薪资那么高的Web前端必看书单
Oct 13 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
ES6入门教程之let、const的使用方法
Apr 13 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 Javascript
JavaScript快速调试的两个技巧
Nov 04 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 sprintf()函数用例解析
2011/05/18 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
javascript几个易错点记录
2014/11/26 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python接口自动化测试的实现
2020/08/28 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
什么是类的返射机制
2016/02/06 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
环保建议书作文300字
2015/09/14 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Python函数式编程中itertools模块详解
2021/09/15 Python
Python Django模型详解
2021/10/05 Python
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android