2013-12-12 37 views
0

如果我继续添加JavaScript处理具有一定的延迟使用window.setTimeout(处理,延迟)的队列

window.setTimeout 

这将增加所有超时处理程序在队列中。 当它们开始执行时,可以保证所有的超时处理程序将按照相同的顺序执行,因为它们已被添加。假设所有处理程序的延迟是相同的。

window.setTimeout(handler1, 100); 
window.setTimeout(handler2, 100); 
window.setTimeout(handler3, 100); 
window.setTimeout(handler4, 100); 

在上面的例子中被执行的顺序是保证然后handler1 handler2然后handler3然后handler4?或者他们可以以任何顺序执行?

我已经尝试了一些小例子,似乎所有的处理程序都按照正确的顺序执行,但是要确保所有浏览器的行为如何。

+0

我没有权威来源,但他们应该按顺序执行。 http://jsfiddle.net/Ebkuk/ –

+0

是的,这是关注,http://www.w3.org/TR/2011/WD-html5-20110525/timers.html#timers说,所有计时器处理程序将进入队列但我们可以假设队列顺序将会被遵循 – lucky

+0

我会依赖它们按顺序执行(尽管它们可能会),但是你想要达到什么样的目标?可能有更好的方法来做到这一点。 –

回答

1

窗口对象的方法,包括setTimeout,涵盖this spec。有关于事件如何排队的部分。如果它们具有相同的超时值,它不会指定任何有关项目排队的顺序。因此,我认为你不能依赖这方面的任何特定行为;浏览器可以随意实现它们。