setTimeout 在 Firefox 中延迟

setTimeout delayed in firefox

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

我试过:

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



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


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

下面的代码是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.

中没有发生

我最终尝试了更高的轮询延迟 (5000ms),这在 FF 中效果很好。在 FF 中,ajax 请求在下一次调用之前处理似乎 500 毫秒太快了。