防抖
将高频次的操作优化成最后一次执行。
function dounce(fn, delay = 200) {
let timer = null;
return function() {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.apply(this, arguments);
timer = null;
}, delay)
}
}
截流
每隔一段时间执行一次,就是将高频操作优化成低频操作。
function throttle(fn, delay = 200) {
let timer = null;
return function() {
if(timer) {
return;
}
timer = setTimeout(() => {
fn.apply(this, arguments);
timer = null;
}, delay)
}
}