我一直在尝试在我的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);
答案 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中。