參見下面的代碼的Javascript定時器以何種順序
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執行?
參見下面的代碼的Javascript定時器以何種順序
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執行?
t1將在t執行後的100ms執行。
但實際上,如果頁面繁忙,setTimeout可能會稍後觸發,以便它可以小於或大於100ms。
如果你想控制執行順序,我真的認爲你應該排序超時。
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
JavaScript是單線程的。如果某些代碼塊使用執行線程,則不能執行其他代碼。這意味着你的setTimeout()調用必須等到主執行完成。 [from here] setTimeout behaviour with blocking code
以上是正確的答案,儘管我會鼓勵你,在可能的情況下,在你的瀏覽器中打開JavaScript控制檯並自己弄清楚。 console.log(Date.now())在你的代碼中並測試它。當我第一次進入編程時,我總是會轉向專業人士尋求簡單問題(出於習慣),但根據我的經驗,成功編寫代碼通常意味着知道如何得到答案,而不是僅僅知道答案是什麼。
此外,我認爲如果您自己發現而不是僅僅告訴您的人,您更有可能記得答案。
祝你好運!
如果只有某種方法可以找出... – JJJ
t1在t後100ms執行。你有沒有在setTimeout手冊上搜索它? –
立即返回對'setTimeout()的調用。換句話說,這三個電話幾乎不會消耗時間。 – Pointy