Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查是否有超时等待运行?_Javascript_Settimeout - Fatal编程技术网

Javascript 检查是否有超时等待运行?

Javascript 检查是否有超时等待运行?,javascript,settimeout,Javascript,Settimeout,我正在处理一个无限滚动样式的页面(例如无限滚动,单击并向下滚动),它在用户每次滚动时运行一个名为update()的函数 我可以使用setInterval来代替,并每隔x毫秒检查一次,但是如果有一个调用自身的超时,页面响应会更快、更可靠 基本上,update()会向页面添加一些内容,然后,如果这些内容不足以让您向下滚动更多内容,请设置一个超时时间,以便再次调用update()。如果您只滚动一个像素,这将很好,但当然,当您滚动时,它会发送数十或数百个滚动事件。这会成为一个问题,因为一次会有数十(或数

我正在处理一个无限滚动样式的页面(例如无限滚动,单击并向下滚动),它在用户每次滚动时运行一个名为
update()
的函数

我可以使用
setInterval
来代替,并每隔x毫秒检查一次,但是如果有一个调用自身的超时,页面响应会更快、更可靠

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

所以我想用我的ID检查是否已经有一个超时等待执行,但是似乎没有一个函数用于这是JavaScript。有没有办法检查超时ID是否已执行?如果没有,还有其他选择吗?我有JQuery


…还是我应该设置一个间隔并牺牲响应能力?

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

例如:


您可以让超时在运行后使用自己的计时器值更新一些全局内容,因此,您可以检查它是否已运行。当您执行超时时,将其设置为null也是我用于此操作的技巧。@mattbornski如果我没有说我们的网站每次都使用这种精确模式,我们就可以在任何页面上设置超时,即使只调用一次。
var intervals = [];

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

    var some_func = function(){
        // do stuff
        clearTimeout(intervals[id]);
        intervals[id] = null;
    }
}