综合来说节流防抖都是事件优化的一种方向,应用场景减少事件触发频率的一种解决思想
节流:事件在一定时间内只执行一次,减少频繁触发引发的事件执行频率,再此时间内继续触发事件不会执行
防抖:事件在一定时间只执行一次,在此时间段内触发会重新计算时间。防抖动是将多次执行变为最后一次执行,防抖可以加入参数控制函数是否立即执行
节流函数
GetFunction(Func,TimeSpan)
{
var Timer=-1;
return function(){
if(Timer==-1){
Func();
Timer=setTimeout(function(){
Timer=-1;
},TimeSpan)
}
}
}
防抖函数
节流函数
GetFunction(Func,TimeSpan,ExcuteFlag)
{
var Timer=-1;
return function(){
if(Timer==-1)
{
Timer=setTimeout(function(){
Timer=-1;
if(!ExcuteFlag){
Func();
}
},TimeSpan)
if(ExcuteFlag){
Func();
}
}
else{
clearTimeout(Timer);
Timer=setTimeout(function(){
Timer=-1;
if(!ExcuteFlag){
Func();
}
},Timespace)
}
}
}