/**
* 当函数被执行的频率非常高的时候(比如一秒钟被执行多少次)
* 实际上只需要一秒钟被调用2-3次
* 为了提高性能,就需要节流
* 《js设计模式》
*/
var throttle = function(fn, interval) { //每多长时间执行一次
var _self = fn,
timer, firstTime = true;
return function() {
var args = arguments,
_me = this;
// console.log(this)
if (firstTime) { //如果是第一次执行,就立即执行
_self.apply(_me, args);
return firstTime = false;
};
if (timer) { //如果还没到点,时间还没被清空,就返回false
return false;
}
timer = setTimeout(function() { //设置定时器,多少秒后才能执行,并清空定时器,以便下次能执行
clearTimeout(timer);
timer = null;
_self.apply(_me, args);
}, interval || 500);
};
};
var b = throttle(function() { console.log(1) }, 3000); //b函数只能每3秒执行一次
console.log(b)
setInterval(() => {
b();
}, 200);
一种节流实现方式
最新推荐文章于 2024-04-03 13:08:44 发布