vue中axios防止多次觸發(fā)終止多次請求的示例代碼(防抖)
需求
例如在搜索框中,并不是你輸入一個字就需要渲染一次數(shù)據(jù),而是取最后一次的輸入內(nèi)容進行搜索。
連續(xù)按下 AAAAA ,只取最后一次按下時搜索框的內(nèi)容(即:AAAAA)進行搜索。 而不是搜索跟 A(第一次按下),AA(第二次按下),AAA相關聯(lián)的內(nèi)容
本文例子: 檢測用戶輸入的值,監(jiān)測這個值,然后根據(jù)值調(diào)用接口查詢結果
代碼:
<template>
<input type="text" v-model="message">
<template>
<script>
import axios from "axios";
export default {
data(){
return{
message:''
},
watch : {
message(newVal){
var that = this;
// 取消上一次請求
this.cancelRequest();
axios.get('/api/searchList?cityId=10&kw='+ newVal, {
cancelToken: new axios.CancelToken(function(c) {
that.source = c;
})
}).then((res) => {
// 在這里處理得到的數(shù)據(jù)
//數(shù)據(jù)邏輯處理
}).catch((err) => {
if (axios.isCancel(err)) {
console.log('Rquest canceled', err.message); //請求如果被取消,這里是返回取消的message
} else {
//handle error
console.log(err);
}
})
}
},
methods: {
cancelRequest(){
if(typeof this.source ==='function'){
this.source('終止請求')
}
}
}
}
</script>
其他做法:
可以使用 clearTimeout() setTimeout() 截取,設置一定時常請求一次
總結
以上所述是小編給大家介紹的vue中axios防止多次觸發(fā)終止多次請求的實現(xiàn)方法(防抖),希望對大家有所幫助!
相關文章
vue3.x中useRouter()執(zhí)行后返回值是undefined問題解決
這篇文章主要給大家介紹了關于vue3.x中useRouter()執(zhí)行后返回值是undefined問題的解決方法,文中通過代碼示例介紹的非常詳細,對大家學習或者使用vue3.x具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
element-ui配合node實現(xiàn)自定義上傳文件方式
這篇文章主要介紹了element-ui配合node實現(xiàn)自定義上傳文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
基于vue 添加axios組件,解決post傳參數(shù)為null的問題
下面小編就為大家分享一篇基于vue 添加axios組件,解決post傳參數(shù)為null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
在vue和element-ui的table中實現(xiàn)分頁復選功能
這篇文章主要介紹了在vue和element-ui的table中實現(xiàn)分頁復選功能,本文代碼結合圖文的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
一文詳解VueUse中useAsyncState的實現(xiàn)原理
在Vue 3 Composition API中,我們可以使用自定義鉤子函數(shù)來封裝可復用的邏輯,useAsyncState是一個用于管理異步狀態(tài)的自定義鉤子函數(shù),本文將給大家介紹一下useAsyncState的實現(xiàn)原理,感興趣的朋友可以參考下2024-01-01
vue動態(tài)生成新表單并且添加驗證校驗規(guī)則方式
這篇文章主要介紹了vue動態(tài)生成新表單并且添加驗證校驗規(guī)則方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10

