防抖:如果短时间内大量触发同一事件,只会执行一次函数。
节流:一种类似控制阀门一样定期开放的函数,也就是让函数执行一次后,在某个时间段内暂时失效,过了这段时间后再重新激活(类似于技能冷却时间)。
// 防抖
function debounce(fn, delay) {
let timer = null
return function () {
if (timer) clearTimeout(timer)
timer = setTimeout(fn, delay)
}
}
// 节流
function throttle(func, delay = 500) {
let flag = true;
return function () {
if (!flag) return false;
flag = flase;
setTimeout(() => {
func.apply(this, arguments);
flag = true;
}, delay)
}
}