首页 > 编程 > JavaScript > 正文

vue axios请求频繁时取消上一次请求的方法

2019-11-19 12:32:37
字体:
来源:转载
供稿:网友

一、前言

在项目中经常有一些场景会连续发送多个请求,而异步会导致最后得到的结果不是我们想要的,并且对性能也有非常大的影响。例如一个搜索框,每输入一个字符都要发送一次请求,但输入过快的时候其实前面的请求并没有必要真的发送出去,这时候就需要在发送新请求的时候直接取消上一次请求。

二、代码

<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>

三、结语

这样就可以成功取消上一次请求啦!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表