棧:先進后出覆旭,即只有一端進出
隊列:先進先出滤否,一端進一端出
Event Loop
image.png
在javascript中涂圆,任務分類兩類,一為宏任務macroTask也稱為task瑰步,一為微任務microTask.
宏任務macroTask
script全部代碼、setTimeout
璧眠、setInterval
缩焦、setImmediate
(瀏覽器暫時不支持,只有IE10支持责静,具體可見MDN
)袁滥、I/O
、UI Renering
微任務 microTask
-
Process.nextTick(Node獨有)
灾螃、Promise
题翻、Object.observe(廢棄)
、MutationObserver
(具體使用方式查看這里)
1.程序每次執(zhí)行時腰鬼,首先執(zhí)行同步代碼嵌赠,并將宏任務(task)和微任務(microTask)分別分配到相應的隊列中。
2.每次執(zhí)行一個宏任務后熄赡,都會檢測微任務隊列是否為空姜挺,如果不為空,則執(zhí)行微任務隊列中的任務本谜,直至將微任務隊列清空初家。然后再執(zhí)行下一個宏任務,如此循環(huán)乌助。