5

我正在处理一个无限滚动样式页面(对于无限滚动的示例,请单击此处并向下滚动),它运行一个在update()每次用户滚动时调用的函数,等等。

我可以setInterval改为使用并检查每 x 毫秒,但是通过调用自身的超时,页面响应更快、更可靠。

基本上,update()向页面添加一些内容,然后,如果该内容不足以让您向下滚动更多,请设置超时以update()再次调用。如果您只滚动一个像素,这会很好,但当然,当您滚动时,它会发送数十或数百个滚动事件。这会成为一个问题,因为一次会有数十个(或数百个)超时运行。有太多的超时会破坏我想要添加新内容的一致动画。

所以我想使用我拥有的 ID 检查超时是否已经在等待执行,但是似乎没有一个函数可以用于 JavaScript。有没有办法检查超时 ID 是否已经执行?如果没有,有替代方案吗?我有 jQuery。

...或者我应该只做一个间隔并牺牲响应能力?

4

1 回答 1

4

当函数触发时,清除间隔并将您保存初始值的变量设置为 null。然后检查空值。如果你正在做一堆这些,你可以通过你拥有的 id 将它们存储在一个数组中。

例如:

var intervals = [];

if(intervals[id] != null){
    intervals[id] = setTimeout(some_func, 1000);

    var some_func = function(){
        // do stuff
        clearTimeout(intervals[id]);
        intervals[id] = null;
    }
}
于 2012-04-18T00:53:18.820 回答