如何在Vue中使用debouce防抖函數(shù)
1.防抖函數(shù)
假定兩次 Ajax 通信的間隔不得小于2500毫秒,上面的代碼可以改寫成下面這樣。
$('textarea').on('keydown', debounce(ajaxAction, 2500));
function debounce(fn, delay){
var timer = null; // 聲明計(jì)時(shí)器
return function() {
var context = this;
var args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}
上面代碼中,只要在2500毫秒之內(nèi),用戶再次擊鍵,就會(huì)取消上一次的定時(shí)器,然后再新建一個(gè)定時(shí)器。這樣就保證了回調(diào)函數(shù)之間的調(diào)用間隔,至少是2500毫秒。
2.Vue中使用debouce防抖函數(shù)
創(chuàng)建一個(gè) debounced(防抖動(dòng))函數(shù),該函數(shù)會(huì)從上一次被調(diào)用后,延遲 wait 毫秒后調(diào)用 func 方法。 debounced(防抖動(dòng))函數(shù)提供一個(gè) cancel 方法取消延遲的函數(shù)調(diào)用以及 flush 方法立即調(diào)用。 可以提供一個(gè) options(選項(xiàng)) 對(duì)象決定如何調(diào)用 func 方法,options.leading 與|或 options.trailing 決定延遲前后如何觸發(fā)
(注:是 先調(diào)用后等待 還是 先等待后調(diào)用)。
?func 調(diào)用時(shí)會(huì)傳入最后一次提供給 debounced(防抖動(dòng))函數(shù) 的參數(shù)。 后續(xù)調(diào)用的 debounced(防抖動(dòng))函數(shù)返回是最后一次 func 調(diào)用的結(jié)果。
Lodash debouce參數(shù):
func? (Function): 要防抖動(dòng)的函數(shù)。[wait=0]? (number): 需要延遲的毫秒數(shù)。[options=]? (Object): 選項(xiàng)對(duì)象。[options.leading=false]? (boolean): 指定在延遲開始前調(diào)用。[options.maxWait]? (number): 設(shè)置 func 允許被延遲的最大值。[options.trailing=true]? (boolean): 指定在延遲結(jié)束后調(diào)用。
<template>
<el-input
v-model="value"
size="mini"
placeholder="請(qǐng)輸入.."
clearable
@keydown.enter="handleSearch"
></el-input>
</template>
<script>
import _ from 'lodash'
export default {
data() {
return { value: '' }
},
create() {
this.handleSearch = _.debounce(() => {
// 獲取列表
this.getList();
}, 300);
},
beforeDestroy() {
// 取消該函數(shù)的防抖動(dòng)調(diào)用
this.handleSearch.cancel();
},
}
</script>
到此這篇關(guān)于如何在Vue中使用debouce防抖函數(shù)的文章就介紹到這了,更多相關(guān)Vue中使用debouce防抖函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue JS對(duì)URL網(wǎng)址進(jìn)行編碼解碼,轉(zhuǎn)換為對(duì)象方式
這篇文章主要介紹了Vue JS對(duì)URL網(wǎng)址進(jìn)行編碼解碼,轉(zhuǎn)換為對(duì)象方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue Cli 環(huán)境刪除與重裝教程 - 版本文檔
這篇文章主要介紹了vue Cli 環(huán)境刪除與重裝教程 - 版本文檔,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
移動(dòng)端滑動(dòng)切換組件封裝 vue-swiper-router實(shí)例詳解
這篇文章主要介紹了移動(dòng)端滑動(dòng)切換組件封裝 vue-swiper-router實(shí)例詳解,需要的朋友可以參考下2018-11-11
vue點(diǎn)擊單張圖片放大實(shí)現(xiàn)步驟(純js)
這篇文章主要給大家介紹了關(guān)于vue點(diǎn)擊單張圖片放大實(shí)現(xiàn)的相關(guān)資料,在vue項(xiàng)目中實(shí)現(xiàn)點(diǎn)擊圖片放大功能相信對(duì)大家來說都不陌生,文中給出了詳細(xì)的js示例代碼,需要的朋友可以參考下2023-07-07
vue動(dòng)態(tài)生成新表單并且添加驗(yàn)證校驗(yàn)規(guī)則方式
這篇文章主要介紹了vue動(dòng)態(tài)生成新表單并且添加驗(yàn)證校驗(yàn)規(guī)則方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
從0搭建Vue3組件庫如何使用?glup?打包組件庫并實(shí)現(xiàn)按需加載
這篇文章主要介紹了從0搭建Vue3組件庫如何使用?glup?打包組件庫并實(shí)現(xiàn)按需加載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03

