3
window.addEventListener('resize', onResize, false);
function onResize() {
    timer = setTimeout(function() { 
        console.log('fire timer');
    }, 1000);
}

调整大小事件触发速度超快。所以每 1000 毫秒会有很多计时器触发。如何只触发最后一个计时器?

4

2 回答 2

8

清除每次通话的计时器

var timer;

function onResize() {

    clearTimeout(timer);

    //...

    timer = setTimeout(function() { 
        console.log('fire timer');
    }, 1000);
}

timer可能为 null 或未定义)。

于 2013-06-16T00:40:28.260 回答
2

如果你已经在使用 underscore.js,你可以使用debounce方法来满足这个需求:

创建并返回传递函数的一个新的去抖动版本,该版本将推迟其执行,直到自上次调用以来等待毫秒过去后。对于实现仅在输入停止到达后才应发生的行为很有用。

于 2013-06-16T00:55:17.360 回答