1. 程式人生 > 其它 >簡單理解Javascript執行機制 簡單理解Javascript執行機制

簡單理解Javascript執行機制 簡單理解Javascript執行機制

簡單理解Javascript執行機制

JS是單執行緒

JavaScript語言的一大特點就是單執行緒,也就是說,同一個時間只能做一件事。這是因為Javascript這門指令碼語言誕生的使命所致一JavaScript 是為處理頁面中使用者的互動,以及操作DOM而誕生的。比如我們對某個DOM元素進行新增和刪除操作,不能同時進行。應該先進行新增,之後再刪除。

單執行緒就意味著,所有任務需要排隊,前一個任務結束,才會執行後一個任務。

這樣所導致的問題是:如果JS執行的時間過長,這樣就會造成頁面的渲染不連貫,導致頁面渲染載入阻塞的感覺。

同步和非同步

為了解決這個問題,利用多核CPU的計算能力, HTML5提出Web Worker標準,允許JavaScript指令碼建立多個執行緒。於是, JS中出現了同步

非同步

同步

前一個任務結束後再執行後一個任務,程式的執行順序與任務的排列順序是一致的,同步的。

非同步

可以簡單地理解為,做某件事的同時,還可以去處理其他的事情

JS執行機制

  1. 先執行執行棧中的同步任務

  2. 非同步任務(回撥函式)放入任務佇列中

  3. 一旦執行棧中的所有同步任務執行完畢,系統就會按次序讀取任務佇列中的非同步任務,於是被讀取的非同步任務結束等待狀態,進入執行棧,開始執行。

什麼是事件迴圈(event-loop)

主執行緒從"任務佇列"中讀取事件,這個過程是迴圈不斷的,所以整個的這種執行機制又稱為Event Loop(事件迴圈)。

JS是單執行緒

JavaScript語言的一大特點就是單執行緒

,也就是說,同一個時間只能做一件事。這是因為Javascript這門指令碼語言誕生的使命所致一JavaScript 是為處理頁面中使用者的互動,以及操作DOM而誕生的。比如我們對某個DOM元素進行新增和刪除操作,不能同時進行。應該先進行新增,之後再刪除。

單執行緒就意味著,所有任務需要排隊,前一個任務結束,才會執行後一個任務。

這樣所導致的問題是:如果JS執行的時間過長,這樣就會造成頁面的渲染不連貫,導致頁面渲染載入阻塞的感覺。

同步和非同步

為了解決這個問題,利用多核CPU的計算能力, HTML5提出Web Worker標準,允許JavaScript指令碼建立多個執行緒。於是, JS中出現了同步

非同步

同步

前一個任務結束後再執行後一個任務,程式的執行順序與任務的排列順序是一致的,同步的。

非同步

可以簡單地理解為,做某件事的同時,還可以去處理其他的事情

JS執行機制

  1. 先執行執行棧中的同步任務

  2. 非同步任務(回撥函式)放入任務佇列中

  3. 一旦執行棧中的所有同步任務執行完畢,系統就會按次序讀取任務佇列中的非同步任務,於是被讀取的非同步任務結束等待狀態,進入執行棧,開始執行。

什麼是事件迴圈(event-loop)

主執行緒從"任務佇列"中讀取事件,這個過程是迴圈不斷的,所以整個的這種執行機制又稱為Event Loop(事件迴圈)。