js中的巨集任務和微任務

wpff-1314發表於2020-12-07

js執行緒

JavaScript 語言的一大特點就是單執行緒,也就是說,同一個時間只能做一件事。
JavaScript 的單執行緒,與它的用途有關。作為瀏覽器指令碼語言,JavaScript 的主要用途是與使用者互動,以及操作 DOM。這決定了它只能是單執行緒,否則會帶來很複雜的同步問題。

所以,為了避免複雜性,從一誕生,JavaScript 就是單執行緒,這已經成了這門語言的核心特徵,將來也不會改變。

為了利用多核 CPU 的計算能力,HTML5 提出 Web Worker 標準,允許 JavaScript 指令碼建立多個執行緒,但是子執行緒完全受主執行緒控制,且不得操作 DOM。所以,這個新標準並沒有改變 JavaScript 單執行緒的本質。

非同步

單執行緒就意味著,所有任務需要排隊,前一個任務結束,才會執行後一個任務。這就造成了程式的阻塞

當我們主執行緒遇到非同步事件時,他並不會立刻執行 而是會去放進一個非同步佇列中,當我們所有的同步程式碼執行完畢時,js才會執行非同步對列中的方法

微任務和巨集任務

在這裡插入圖片描述

事件迴圈

在這裡插入圖片描述

相關文章