使用場景:onresize,scroll,mousemove ,mousehover 等
防抖函數如下:連續事件完全觸發完成之後,調用一次
function debounce(fn, waitTime) {
let timer = null;
return function() {
const context = this;
let args = arguments;
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(context, args);
}, waitTime);
};
}
節流函數如下:當達到了一定的時間間隔就會執行一次
function throttle(fn, waitTime) {
let timer = null;
return function() {
const context = this;
let args = arguments;
if (!timer) {
timer = setTimeout(() => {
fn.apply(context, args);
clearTimeout(timer);
}, waitTime);
}
};
}