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中声明全局变量三种方式的异同
Dec 03 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
Jun 14 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
微信小程序 require机制详解及实例代码
Dec 14 Javascript
微信小程序调用PHP后台接口 解析纯html文本
Jun 13 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
vue实现简单瀑布流布局
May 28 Javascript
解决await在forEach中不起作用的问题
Feb 25 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冒泡排序算法代码详细解读
2011/07/17 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
js断点调试经验分享
2017/12/08 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
django+mysql的使用示例
2018/11/23 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
.NET笔试题(20个问题)
2016/02/02 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
工程管理英文求职信
2014/03/18 职场文书
文秘个人求职信范文
2014/04/22 职场文书
企业安全标语
2014/06/07 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
承诺函格式模板
2015/01/21 职场文书
社区安全温馨提示语
2015/07/14 职场文书
创业计划书之家教托管
2019/09/25 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
Nginx限流和黑名单配置
2022/05/20 Servers