.函数的去抖:
什么叫做函数的去抖,就相当于你从函数的开头到结尾只执行一次的的叫做去抖:
也就是他给你一巴掌,他十分钟原谅你,到了2分钟了他有给你一巴掌,所以你还的等10分钟.
例子:
var timer = null;
function handlerSearch(){
cliearTimeout(timer);
timer = setTimeout(function(){
console.log(1)
},500)
}
函数的节流:
在你设置的时间之内只执行一次某段代码,
也就是:你给他一巴掌,他也是10分钟原谅你,但是你只有在这个10分钟内部不动他,他就会原谅你,只有你动了那就完了,所以你必须10分钟后再打他
例子:
var timer = null;
function handlerSearch(){
if(timer!=null){
return false
}
timer = setTimeout(function(){
console.log(1);
timer = unll;
},200)
}
函数节流与函数去抖的封装
// 函数去抖;
function _debounce(callback,dealy){
// 利用闭包,让 timer 私有化;
var timer = null;
return function(){
// 去抖函数; 确保,callback在正确的时机被调用?
// 事件执行的时候,真正会执行的函数是这个;
if(timer !== null) return false;
// 如果已经过了规定的时间可以再次执行代码了;
timer = setTimeout(function(){
callback();
timer = null;
},dealy)
}
}
// 函数节流;
function _throttle(callback,dealy){
// 利用闭包,让 timer 私有化;
var timer = null;
return function(){
clearTimeout(timer);
// 如果已经过了规定的时间可以再次执行代码了;
timer = setTimeout(function(){
callback();
},dealy)
}
}
网友评论