window.addEventListener('resize', onResize, false);
function onResize() {
timer = setTimeout(function() {
console.log('fire timer');
}, 1000);
}
调整大小事件触发速度超快。所以每 1000 毫秒会有很多计时器触发。如何只触发最后一个计时器?
window.addEventListener('resize', onResize, false);
function onResize() {
timer = setTimeout(function() {
console.log('fire timer');
}, 1000);
}
调整大小事件触发速度超快。所以每 1000 毫秒会有很多计时器触发。如何只触发最后一个计时器?
清除每次通话的计时器
var timer;
function onResize() {
clearTimeout(timer);
//...
timer = setTimeout(function() {
console.log('fire timer');
}, 1000);
}
(timer
可能为 null 或未定义)。
如果你已经在使用 underscore.js,你可以使用debounce方法来满足这个需求:
创建并返回传递函数的一个新的去抖动版本,该版本将推迟其执行,直到自上次调用以来等待毫秒过去后。对于实现仅在输入停止到达后才应发生的行为很有用。