防抖主要为了防止事件在短期内反复执行。一般有如下两种方式:
1.自杀模式
2.clearTimeout模式
调用方法window.onresize = throttle(fn,wait);
function fn(){
console.log('test');
}
wait = 1000;
1.自杀模式
第一次直接运行,不存在延时
function throttle(fn,wait) {
var timer;
return function(){
if(!timer) {
timer = setTimeout(function(){
timer = null;
},wait);
fn.apply(this);
}
}
}
2.clearTimeout方式
第一次执行存在延时
function throttle(fn,timer) { //防抖函数
console.log(timeout);
var timeout = null;
return function() { //使用闭包 一个闭包
if (timeout != null) {
console.log(timeout);
clearTimeout(timeout);
}
timeout = setTimeout(fn,timer);
}
}
网友评论