js 事件迴圈 巨集任務 微任務

2021-10-06 13:22:10 字數 1005 閱讀 8302

console.

log(

'1')

;settimeout

(function()

).then

(function()

)})new

promise

(function

(resolve)).

then

(function()

)settimeout

(function()

).then

(function()

)})

先分析**的執行步驟:

1 **從上向下執行

console.log(『1』); 列印出 1

console.log(『7』); 列印出 7

2 遇到 巨集任務 settimeout 放到非同步佇列中

遇見 微任務 promise 放到 非同步佇列中

3 主程序 **執行完畢 要去非同步佇列中 找尋是否有要執行的 任務

發現非同步佇列中有要執行的任務 就要進行 處理

4 首先 在非同步佇列中 有 巨集任務 和 微任務

先執行 微任務 然後在執行 巨集任務

巨集任務第乙個 巨集任務

settimeout(function() ).then(function() )

})第二個 巨集任務

settimeout(function() ).then(function() )

})微任務

new promise(function(resolve) ).then(function() )

5 主程序 中 已經 列印了 1 7

依次 執行 微任務 8

在執行 巨集任務

先執行第乙個 巨集任務 列印 2 4

原因:**自上往下執行 先執行 同步** 在執行非同步** 再列印 5

下乙個 巨集任務 同理 列印 9 11

微任務 12

整段**輸出為 :1,7,8,2,4,5,9,11,12 ;

事件迴圈 巨集任務 微任務

在js中我們經常會需要 同時 進行多項工作,例如 定時器 事件 非同步資料互動等,那麼js是如何管理這些任務的,又是如何確定他們的執行順序的?首先,所有的語言都擁有併發模型的概念,也就是說多個任務如何同時執行,大部分語言支援多執行緒執行,js擁有所有語言中最簡單的併發模型 js使用單執行緒的 事件迴...

微任務,巨集任務,事件迴圈(Event Loop)

最近遇到了事件迴圈的問題,於是決定好好的研究一番。看了一篇文章感覺講的特別好。我們都知道event loop的執行順序是 執行巨集任務 該巨集任務產生的微任務,若微任務執行中產生了新的微任務,則繼續執行微任務,微任務執行完畢,再回到巨集任務進行下一輪迴圈。後來自己也看了很多例子,但是疑惑點是,對於p...

js單執行緒,事件迴圈,微任務巨集任務

js單執行緒 js是單執行緒的語言,所謂 單執行緒 就是一根筋,對於拿到的程式,一行一行的執行,直到上面的執行為完成,只能做這一件事 事件迴圈 event loop 事件迴圈 中,每一次迴圈稱為 tick,每一次tick的任務如下 執行棧選擇最先進入佇列的巨集任務 通常是script整體 如果有則執...