防抖函数(一段时间内(delay),当 空隙时间 大于 delay 时,取最后一次事件执行)
例如:输入框远程加载数据...
function debounce(fn, delay) {
let timer;
return function () {
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
}
}
节流函数(一段时间内(delay),执行一次) 例如:监听浏览器滚动事件,发送请求,加载数据。
function throttle(fn, delay) {
let lastCall = 0;
return function() {
let now = new Date().getTime();
if (now - lastCall < delay) {
return;
}
lastCall = now;
return fn(...arguments);
};
}