function debounce(func, wait = 500, immediate = false) {
// 清除定時(shí)器
if (timeout !== null) clearTimeout(timeout);
// 立即執(zhí)行,此類情況一般用不到
if (immediate) {
var callNow = !timeout;
timeout = setTimeout(function() {
timeout = null;
}, wait);
if (callNow) typeof func === 'function' && func();
} else {
// 設(shè)置定時(shí)器,當(dāng)最后一次操作后,timeout不會(huì)再被清除,所以在延時(shí)wait毫秒后執(zhí)行func回調(diào)方法
timeout = setTimeout(function() {
typeof func === 'function' && func();
}, wait);
}
}
使用方式:
const func1 = function(){
console.log(2222)
}
debounce(func1, 1000)