节流:按单位时间段(delay)去稀释事件
function throttle(fn, delay) {
let firstTime = true;
let timer = null;
return function() {
if (firstTime) {
fn.apply(this, arguments);
firstTime = false;
return
}
if (timer) {
return
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
}
防抖:在单位时间间隔,只触发最后一次
function debounce(fn, delay) {
let timer = null;
return function() {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(this, arguments)
}, delay)
}
}