您好,登錄后才能下訂單哦!
一、前言
在項(xiàng)目中經(jīng)常有一些場景會連續(xù)發(fā)送多個請求,而異步會導(dǎo)致最后得到的結(jié)果不是我們想要的,并且對性能也有非常大的影響。例如一個搜索框,每輸入一個字符都要發(fā)送一次請求,但輸入過快的時候其實(shí)前面的請求并沒有必要真的發(fā)送出去,這時候就需要在發(fā)送新請求的時候直接取消上一次請求。
二、代碼
<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) => { // 在這里處理得到的數(shù)據(jù) ... }).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>
三、結(jié)語
這樣就可以成功取消上一次請求啦!以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。