本文從JS是單線程開始,到JS為了提高效率,使用非同步,到JS如何實現非同步,再到瀏覽器是如何配合JS執行非同步。最後提到了一個任務隊列的優先順序問題。 ...
前言
前端小白學習總結,歡迎討論和指導。
本文從JS是單線程開始,到JS為了提高效率,使用非同步,到JS如何實現非同步,再到瀏覽器是如何配合JS執行非同步。最後提到了一個任務隊列的優先順序問題。
本文是學習JS運行機制中捋出來的思路,有點層層遞進的感覺,難免有理解錯誤或表述不當的地方。如果能幫助到看到這篇的你,我很感激。
一、JS是單線程。
所謂單線程,是指在JS引擎中負責解釋和執行JavaScript代碼的線程只有一個。不妨叫它主線程。
選擇單線程的原因之一是JS要操作DOM,如果多線程可能造成執行混亂。經典慄子來了,有要刪除節點的函數,有要操作節點的。萬一多線程執行順序亂了就壞了。
二、JS的非同步
單線程使得JS引擎只能一個任務結束再執行下一個,如果某任務時間較長,就會發生阻塞。為瞭解決這個問題。JS也使用了非同步編程。