Javascript计时器在哪个顺序

时间:2015-01-17 15:21:17

标签: javascript settimeout

请参阅以下代码

vat t = setTimeout(x, 1000);
vat t1 = setTimeout(y, 1100);
var t2 = setTimoue(z, 4000);

执行顺序为t,t1和t2。所以,t在1s后执行。直到这里很好。那么t1是在100ms(1100-1000)之后执行还是在执行t后1100ms执行?

4 个答案:

答案 0 :(得分:1)

t1将在执行t后100ms执行。

但实际上,如果页面繁忙,可能会稍后触发setTimeout,使其可以小于或大于100毫秒。

答案 1 :(得分:1)

以上是正确的答案,尽管我会鼓励你,在可能的情况下,继续在浏览器中打开JavaScript控制台并自己弄明白。您的代码中的console.log(Date.now())并对其进行测试。当我第一次进入编码时,我总是求助于简单问题(出于习惯),但根据我的经验,成功编写代码通常意味着知道如何得到答案,而不是仅知道答案是什么。

此外,如果您自己确定答案而不是仅仅告诉您的人,我认为您更有可能记住答案。

祝你好运!

答案 2 :(得分:0)

如果你想控制执行的顺序我真的认为你应该对超时进行排序。

var t = setTimeout(x, 1000);
function x(){
              setTimeout(y, 100);
            }
function y(){
             setTimeout(z, 2900);
            }

在任何情况下,我都不确定你是否应该首先做这些事情。 如果你想要一个接一个地调用一个函数,只需使用.call或.apply。 看看:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

答案 3 :(得分:-1)

JavaScript是单线程的。如果某些代码块使用执行线程,则不能执行其他代码。这意味着你的setTimeout()调用必须等到主执行完成。 [从这里] setTimeout behaviour with blocking code