就是在n秒内只执行一次
代码
// fn回调函数 delay 回调的时间
function debounce(fn, delay) {
var timer; // 维护一个 timer
return function() {
var _this = this;
var args = arguments;
if (timer) {
clearTimeout(timer);
}
// 立即执行一次 不需要可以去掉
if(!timer) {
fn.apply(null)
}
timer = setTimeout(function() {
fn.apply(_this, args);
clearTimeout(timer);
}, delay);
};
}
在一段时间内, 每n秒执行一次。
// fn要回调的函数 delay回调的时间
function throttle(fn, delay) {
var timer;
return function() {
var _this = this;
var args = arguments;
if (timer) {
return;
}
timer = setTimeout(function() {
fn.apply(_this, args);
clearTimeout(timer)
timer = null;
}, delay)
}
}