我有一个我正在处理的无限滚动样式页面(对于无限滚动的示例,单击here并向下滚动),每次用户滚动时都会运行一个名为update()
的函数,除其他外。
我可以使用setInterval
来检查每个x毫秒,但是如果超时调用自身,则页面响应更快,更可靠。
基本上,update()
会向页面添加一些内容,然后,如果该内容不足以让您向下滚动,请设置超时以再次调用update()
。如果你只滚动一个像素,这没关系,但当然,滚动它时会发送数十或数百个滚动事件。这成为一个问题,因为将同时运行数十(或数百)个超时。有太多的超时会导致添加我想要的新内容的一致动画。
所以我想检查一个超时是否已经在等待使用我拥有的ID执行,但似乎没有一个函数,这是JavaScript。有没有办法检查超时ID是否已执行?如果没有,有其他选择吗?我有JQuery。
......或者我应该只是间隔并牺牲响应能力?
答案 0 :(得分:3)
当函数触发时,清除间隔并将保存初始值的变量设置为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;
}
}