js執行隊列、順序


問題:setTimeout的延遲事件,是從什么時候開始算起的?

答:

首先你要明白Javascript是單線程,單線程就意味着所有任務需要排隊。然后會將所有任務分成兩類:同步任務和異步任務!同步任務:在主線程上執行的任務,只有前一個任務執行完成,才會執行后一個!異步任務:不進入主線程、而進入“任務隊列”的任務,當主線程上的任務執行完,主線程才會去執行“任務隊列”。

對於setTimeout(fn,200),當程序執行到setTimeout(fn,200)這一行時,時間就開始計算當到200ms時,fn會被放進“任務隊列”,而“任務隊列”必須要等到主線程已有的代碼執行完才會執行fn,所以fn實際執行時並不一定是在200ms后,可能是在更久的時間后(取決於主線程上的同步代碼的執行時間以及它在“任務隊列”的位置)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM