请参阅以下代码
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执行?
答案 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