防抖即防止抖动,避免把一次事件误认为多次,应用的场景有:
防抖的重点在于清零
,将之前所有的操作清零,只保留最后一次操作。
function debounce(fn, wait) {
let timer;
return (...args) => {
clearInterval(timer);
timer = setTimeout(() => {
fn(...args);
}, wait);
}
}
节流的主要目的在于降低频率,将高频事件转换为低频事件。应用场景有:
scroll
事件节流的重点在于加锁
,一定时间段内只触发一次操作。
function throttle(fn, wait) {
let timer = null;
return (...args) => {
if (timer !== null) return;
timer = setTimeout(() => {
fn(...args);
timer = null;
}, wait);
}
}
[参考资料] https://q.shanyue.tech/fe/js/3.html
原文:https://www.cnblogs.com/hycstar/p/14626640.html