您的位置:首页 > 其它

函数节流与函数防抖

2018-08-31 21:55 316 查看

简述:

  • 在高性能的javascript当中,函数节流和函数防抖是两种非常重要的提高js效率的方法。其思想就是防止函数在短时间内多次触发,导致性能问题。
  • 实现一般通过闭包,定时器等方式

实现:

函数节流:

方式:利用setTimeout延时触发函数,如果在延时前重复触发函数,清除上次延时,重新设定新的定时。
缺点:如果一直快速触发函数,会导致函数永远无法执行 示例:
//方法一:
function throttle(func, delay){
return function(){
let args = arguments,
context = this;
clearTimeout(func.id);
func.id = setTimeout(function(){
func.apply(context, args);
}, delay);
}
}

//方法二:
function throttle(func, delay){
var timer = null;
return function(){
var args = arguments,
context = this;
clearTimeout(timer);
timer = setTimeout(function(){
func.apply(context, args);
}, delay);
}
}

函数防抖:

方式:利用setTimeout延时触发函数,但需保证其在一段时间内至少触发一次,为节流的变种
示例
function debounce(func, delay, mustRun){
var timer = null,
start = null;

return function(){
var args = arguments,
context = this,
cur = new Date();

clearTimeout(timer);
if(!start){
start = cur;
}

if(cur-start>=mustRun){
func.apply(context, args);
start = cur;
}else{
timer = setTimeout(function(){
func.apply(context, args);
}, delay);
}
}
}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: