防抖函数原理:在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时
防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。
/**
* @param {Function} fn
* @param {Number} delay
*/
function debounce (fn, delay = 50) {
let timer = 0;
return function (...args) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
}