颤抖樱桃,灵界精华,今日邮币卡行情
一、前言
在项目中经常有一些场景会连续发送多个请求,而异步会导致最后得到的结果不是我们想要的,并且对性能也有非常大的影响。例如一个搜索框,每输入一个字符都要发送一次请求,但输入过快的时候其实前面的请求并没有必要真的发送出去,这时候就需要在发送新请求的时候直接取消上一次请求。
二、代码
<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>
三、结语
这样就可以成功取消上一次请求啦!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
详解element上传组件before-remove钩子问题解决
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
网友评论