一定的时间间隔内反复触发任务,直接清除上一次任务,始终执行最后一次任务
function debounce(fn, interval) {
let timer = null;
return function () {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this);
}, interval);
};
}
function log() {
console.log(document.documentElement.scrollTop);
}
window.addEventListener('scroll', throttle(log, 2000));