防抖:防止事件持续触发,等到持续触发的事件结束后再执行函数。比如说当滚动条滚动时候,我们并不希望在滚动期间持续执行一个函数,而是等滚动结束后的若干秒后才执行函数。
防抖函数:在规定时间内未触发第二次,则执行
function debounce(fn,wait){
let timer = null;
return function() {
clearTimeout(timr);
let context = this;
timer = setTimeout(() => {
fn.apply(context,arguments);
}, wait);
}
}
节流:防抖的缺点是如果一件事件一直触发,假设滚动一直上下滚动,那么函数是不会执行的,如果希望在滚动期间函数能够按照一定间隔执行,那就需要用到节流函数,
节流函数,在规定时间内只能执行一次。
function throttle(fn,wait){
var pre = Date.now();
return function(){
var context = this;
var args = arguments;
var now = Date.now();
if( now - pre >= wait){
fn.apply(context,args);
pre = Date.now();
}
}
});