window.setTimeout的队列(处理程序,延迟)

时间:2013-12-12 19:32:53

标签: javascript timer settimeout

如果我继续使用

添加一段延迟的javascript处理程序
window.setTimeout

这将在队列中添加所有超时处理程序。    当他们开始执行时,保证所有超时处理程序将按照添加的顺序以相同的顺序执行。假设所有处理程序的延迟都相同。

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

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

我尝试过一些小例子,似乎所有处理程序都按正确的顺序执行,但是想确定这是否是所有浏览器的行为方式。

1 个答案:

答案 0 :(得分:1)

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