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 相关文章推荐
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
将Datatable转化成json发送前台实现思路
Sep 06 Javascript
javascript中的循环语句for语句深入理解
Apr 04 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
Dec 28 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
详解前后端分离之VueJS前端
May 24 Javascript
详解Angular模板引用变量及其作用域
Nov 23 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 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通过COM使用ADODB的简单例子
2006/12/31 PHP
关于Intype一些小问题的解决办法
2008/03/28 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
JavaScript延迟加载
2021/03/09 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
Three.js基础学习教程
2017/11/16 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python键盘输入转换为列表的实例
2018/06/23 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
医院2014国庆节活动策划方案
2014/09/21 职场文书
2019消防宣传标语!
2019/07/10 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB