setTimeout在Firefox中延迟
问题描述:
我一直在尝试在我的JavaScript应用程序中创建一个setTimeout循环,并且它在除firefox之外的所有浏览器中都很好用。 (我知道,旧消息) 由于某种原因,当延迟设置为500ms,1000ms或类似的东西时,setTimeout调用会延迟很长时间,大概20秒左右。我尝试了一些不同的东西,但是FF中的一切似乎都被推迟了。这两个null参数需要设置,因为它们在某些情况下可能需要使用其他值调用,也使用setTimeout调用。setTimeout在Firefox中延迟
我曾尝试:
timerMessagesRequest = setTimeout(function() {
getSetOfSenders(null, null);
}, pollingDelay);
timerMessagesRequest = setTimeout(function() {
getSetOfSenders(null, null);
}, pollingDelay, undefined);
timerMessagesRequest = setTimeout(
getSetOfSenders(null, null)
, pollingDelay);
答
我最终尝试了更高的轮询延迟(5000ms),并且在FF中工作得很好。在下一次调用之前,在FF中,似乎需要500ms才能让ajax请求处理。
答
下面的代码是的setTimeout的环的样品。
var foo = function(){
setTimeout(function(){
console.log("test");
foo();
},1000);
};
foo();
我在FF上看不到任何问题。 所以这意味着你放的代码不会引起问题。 就像我在评论中所说的,在这种情况下,使用setInterval
更好,也更难找到一个bug。 如果您需要更多的帮助,给我们更多的代码
编辑: http://www-cs-students.stanford.edu/~eparker/files/other/test_settimeout.html
这可能与为什么问题上FF仅发生的原因。 当我用FF运行页面时,我看到了短暂的滞后量,而这并不是在Chrome中发生的。
为什么不使用setInterval而不是setTimeout的循环? – suish 2015-02-24 08:34:31
setInterval与FF更兼容吗? – 2015-02-24 08:35:40
我同意@suish。 'setInterval'应该是这里使用的函数。请尝试一下。 – ArinCool 2015-02-24 08:38:40