舉個例子:
我們直接執行了一個 refresh(),這個refresh函數會被執行30次,
這樣的話就太過於頻繁了,我們就可以將refresh放入防抖函數中去,生成一個新的函數,之后,我們就使用新的函數
這個新生成的函數,並不會非常頻繁的調用,如果下一次執行來的非常快,那么會將上一次的取消掉;
上面說的可能有些抽象了,看看下面的代碼,估計會好理解一些
/**
* 封裝一個防抖動方法
* debounce: 防抖函數, 它的兩個參數=> func:函數(要進行防抖的函數) delay: 毫秒(傳入一個時間限制,毫秒)
* let timer = null; 聲明一個timer為null
* if(timer) clearTimeout(timer) ===============> 如果timer不為空,那么清空它(干掉他)
*
* delay :傳入的毫秒,在這也就是延遲時間
*/
debounce(func, delay) {
let timer = null;
return function(...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}