js運行機制

一、js單線程
1.單線程的含義是js只能在一個線程上運行,也就說,js同時只能執(zhí)行一個js任務,其它的任務則會排隊等待執(zhí)行。
2.js是單線程的,并不代表js引擎線程只有一個。js引擎有多個線程,一個主線程,其它的后臺配合主線程。
3.多線程之間會共享運行資源,瀏覽器端的js會操作dom,多個線程必然會帶來同步的問題,所有js核心選擇了單線程來避免處理這個麻煩。js可以操作dom,影響渲染,所以js引擎線程和UI線程是互斥的。這也就解釋了js執(zhí)行時會阻塞頁面的渲染。
二、同步異步
JavaScript運行時,除了一個運行線程,引擎還提供一個消息隊列,里面是各種需要當前程序處理的消息。新的消息進入隊列的時候,會自動排在隊列的尾端。

1.所有同步任務都在主線程上執(zhí)行,形成一個執(zhí)行棧。
2.主線程之外,還存在一個”任務隊列”。只要異步任務有了運行結果,就在”任務隊列”之中放置一個事件。
3.一旦”執(zhí)行?!敝械乃型饺蝿請?zhí)行完畢,系統(tǒng)就會讀取”任務隊列”,看看里面有哪些事件。那些對應的異步任務,于是結束等待狀態(tài),進入執(zhí)行棧,開始執(zhí)行。
4.主線程不斷重復上面的第三步。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容