var throttle = function (fn, interval) {
var _self = fn, // 保存需要被延迟执行的函数的引用
timer,
firstTime = true; // 是否第一次调用
return function () {
var args = arguments,
_me = this;
if (firstTime) { // 如果是第一次,不需要延迟执行
_self.apply(_me, args);
return firstTime = false;
}
if (timer) {
// 如果定时器还在说明前一次延迟执行还没有完成
return false;
}
timer = setTimeout(function () {
clearTimeout(timer);
timer = null;
_self.apply(_me, args);
}, interval || 500);
}
}
window.onresize = throttle(function () {
console.log('1');
}, 500)
这段代码中判断定时器还有没执行完毕的那一句,我觉得没有必要,因为定时器里面的内容和主js执行是同一个线程,如果定时器没有执行完毕,那么其他的内容也不会执行,所以如果定时器没有执行完成,根本不会进入到下一次的判断中来,有没有大神告诉我是不是这样
相关分类