函数防抖(debounce)
函数防抖,就是指触发事件后开始计时,在一个时间周期内只能执行一次,如果在这个时间周期内又触发了该事件,则会重新计算函数的执行时间。
简单的说,当一个动作连续触发,只执行最后一次。
function debounce(fn, delay = 500) {
let timer = null;
return function() {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.apply(this, arguments);
timer = null;
}, delay);
}
}
函数节流(throttle)
函数节流,就是指触发事件后开始计时,在一个时间周期内只能执行一次,如果在这个时间周期内又触发了该事件,则不会重新计算函数的执行时间。
简单的说,一个函数在限定的时间内最多执行一次。
function throttle(fn, delay = 500) {
let timer = null;
return function() {
if (timer) {
return;
}
timer = setTimeout(() => {
fn.apply(this, arguments);
timer = null;
}, delay)
}
}