簡體   English   中英

Javascript setTimeout計時可靠性

[英]Javascript setTimeout timing reliability

我最近開始更詳細地探索Javascript,以及它在瀏覽器中的執行方式。 具體來說,是setTimeout函數。

我的理解是調用setTimeout(foo,x)會將句柄傳遞給foo,以便在x毫秒后執行。 這個時間有多可靠? 顯然,如果另一個長時間運行的腳本在x毫秒后仍在執行,那么瀏覽器將無法調用foo,但我是否可以絕對確定setTimeout(foo,101)將始終在setTimeout(foo,100)之后執行?

首先,超時是以毫秒為單位,因此1秒= 1000毫秒。 考慮一下。 你總是可以確定1001的延遲將晚於1000. 你必須記住,如果第二種方法繼續改變第一種方法,它並不意味着它將運作良好。 第一種方法可以花費3ms的合理時間(不是復雜的),第二種方法可以在第一種方法之后僅1 ms開始,導致第一種方法的可靠性失敗。 我建議不要使用此功能,但在極少數情況下。

你可以在這個答案評論中為我的具體案例標記我,我可以建議正確的方法來解決它。

大多數瀏覽器使用單線程用於UI和JavaScript,這被同步調用阻止。 因此,JavaScript執行會阻止渲染。

除DOM事件外,異步處理事件。

但是setTimeout(function(),1000)技巧非常有用。 它允許:

讓瀏覽器呈現當前更改。 避免“腳本運行時間過長”的警告。 更改執行流程。 在超時和線程方面,Opera在很多地方都很特別。

因此,如果另一個函數正在執行,它將通過並行運行來處理它。

setTimeout(function(),1000)另一件事是她的時間以毫秒為單位,而不是幾秒鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM