setTimeout在firefox中延迟了

时间:2015-02-24 08:30:34

标签: javascript jquery firefox

我一直在尝试在我的javascript应用程序中创建一个setTimeout循环,它在除Firefox之外的所有浏览器中都很有用。 (我知道,旧消息) 由于某种原因,当延迟设置为500毫秒,1000毫秒或类似情况时,setTimeout调用会延迟很长时间,可能大约20秒。我尝试了一些不同的东西,但在FF中一切似乎都被延迟了。需要设置两个空参数,因为在某些情况下可能需要使用其他一些值调用它们,也可以使用setTimeout调用。

我试过了:

timerMessagesRequest = setTimeout(function () { 
     getSetOfSenders(null, null); 
}, pollingDelay);



timerMessagesRequest = setTimeout(function () { 
         getSetOfSenders(null, null); 
    }, pollingDelay, undefined);


timerMessagesRequest = setTimeout( 
         getSetOfSenders(null, null) 
    , pollingDelay);

2 个答案:

答案 0 :(得分:1)

下面的代码是setTimeout的循环示例。

var foo = function(){
  setTimeout(function(){
    console.log("test");
    foo();
  },1000);
};
foo();

我没有看到在FF上运行此问题。 所以这意味着您输入的代码不会导致问题。 就像我在评论中所说的那样,在这种情况下,使用setInterval更好,更难得到错误。 如果您需要更多帮助,请向我们展示更多代码

已编辑: http://www-cs-students.stanford.edu/~eparker/files/other/test_settimeout.html

这可能与问题仅在FF上发生的原因有关。 当我使用FF运行页面时,我看到了短暂的延迟,这在chrome中不会发生。

答案 1 :(得分:0)

我最终尝试了更高的轮询延迟(5000毫秒),这在FF中运行得很好。看起来好像500ms是为了在下一次调用之前快速处理ajax请求,在FF中。