节流(Throttle):在一定的时间内,用户多次点击,只会执行一次;
防抖(Debounce):在一定的时间内,用户多次点击,只会执行最后一次点击;
代码如何实现:
// 节流:让高频事件变固定频率
function throttle(fn, wait) {
let timer;
return function () {
if (timer) { return; }
timer = setTimeout(() => {
fn()
timer = null;
}, wait);
}
}
// 防抖:让高频事件积累到最后触发
function debounce(fn, wait) {
let timer;
return function() {
clearTimeout(timer);
timer = setTimeout(() => {
fn();
}, wait);
}
}