色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue debounce 函數(shù)

錢淋西1年前10瀏覽0評論

在Vue.js中,有一個非常實用的debounce函數(shù)。當(dāng)我們需要處理頻繁的事件觸發(fā)時,使用debounce可以避免重復(fù)操作,提高性能。

debounce函數(shù)主要的作用是:當(dāng)函數(shù)連續(xù)觸發(fā)時,只執(zhí)行最后一次操作。通過設(shè)置一個等待時間,在等待時間內(nèi)如果函數(shù)再次觸發(fā),就重新開始計時,直到等待時間結(jié)束執(zhí)行最后一次操作。

function debounce(func, wait) {
let timeout;
return function() {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() =>{
func.apply(context, args);
}, wait);
};
}

使用debounce函數(shù)也非常簡單:

import { debounce } from 'lodash';
export default {
data() {
return {
inputValue: '',
};
},
methods: {
handleChange: debounce(function() {
// do something
}, 500),
},
};

在上例中,設(shè)置了一個等待時間500毫秒,當(dāng)input框的值變化時觸發(fā)handleChange函數(shù)。在500毫秒內(nèi)多次變化值,只執(zhí)行最后一次操作,避免了不必要的操作。

使用debounce還可以設(shè)置立即執(zhí)行一次操作:

function debounce(func, wait, immediate = true) {
let timeout;
return function() {
const context = this;
const args = arguments;
if (timeout) clearTimeout(timeout);
if (immediate) {
const callNow = !timeout;
timeout = setTimeout(() =>{
timeout = null;
}, wait);
if (callNow) func.apply(context, args);
} else {
timeout = setTimeout(() =>{
func.apply(context, args);
}, wait);
}
};
}

在例子中,增加了第三個參數(shù)immediate,設(shè)置為true時,立即執(zhí)行一次操作。

以上就是使用Vue.js中的debounce函數(shù)的方式和原理,希望對大家有所幫助。