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整體 如果有則執...