防抖表示当指定时间内持续触发某个事件时,该事件会进行初始刷新,重新开始计算。
function debounce(fn, time) {
let timer = null;
return function() {
if (timer) clearTimeout(timer);
timer = setTimeout({
fn.apply(this, arguments);
}, time)
}
}
节流当指定时间持续触发某个事件时,该事件只会执行首次触发事件,也就是说指定时间内只会触发一次
。
function throttle(fn, time) {
let canRun = true;
return function() {
if (!timer) return;
canRun = false;
timer = setTimeout( () => {
fn.apply(this, arguments);
canRun = true;
}, time)
}
}