window.addEventListener('resize', onResize, false);
function onResize() {
timer = setTimeout(function() {
console.log('fire timer');
}, 1000);
}
调整事件的速度超级快。因此每1000ms会有很多计时器点火。如何只开始最后一个计时器?
答案 0 :(得分:8)
清除每次通话的计时器
var timer;
function onResize() {
clearTimeout(timer);
//...
timer = setTimeout(function() {
console.log('fire timer');
}, 1000);
}
(timer
可能为null或未定义。)
答案 1 :(得分:2)
如果您已经使用了underscore.js,则可以使用debounce方法来满足此需求:
创建并返回传递函数的新debounced版本,该函数将推迟执行,直到自上次调用之后经过等待毫秒。用于实现仅在输入停止到达之后发生的行为。