防抖
防抖(debounce)是指在高频事件中,事件被触发n秒后再执行回调,若在n秒内被重新触发,则重新计时。
原生js代码实现:
/*
定义防抖函数,
1.再次触发事件时,计数器会重新计时。
2.当该时间delay内没有触发事件,则执行ajax函数。
*/
var time = null;
function debounce(delay){
if(time){
clearInterval(time);
}
time = setTimeout(()=>{
console.log('执行函数');
},delay)
}
节流
节流(throttle)是指在高频事件中,在指定时间段内,只触发一次。
原生js代码实现:
/*
定义节流函数,
1.再次触发事件时,若在时间delay范围内,则执行ajax函数。
2.若在时间delay范围外,则执行ajax函数。
*/
var stateTime = true;// stateTime为当前调用是否在执行。
function throttle(delay){
// 如果定时器存在,则不调用函数
if(!stateTime){
return false;
}
stateTime = false;
setTimeout(()=>{
console.log('执行函数');
stateTime = true;
},delay)
}