1. 程式人生 > >js事件佇列

js事件佇列

1.js的執行是單執行緒的。

2.而當它遇到了window的setTimeout和setInterval這樣的非同步任務,js都默默地先不執行這些回撥,而是繼續向下執行其他js指令碼,等到所有js指令碼都解析執行完了,再執行回撥。


3.那麼有多個回撥的時候執行順序是怎麼樣的呢?

瀏覽器是多執行緒的,js執行執行緒只是它多個執行緒中的一個。

當js的執行執行緒看到了setTimeout,瀏覽器馬上會呼叫其他執行緒把這個函式中的回撥扔到瀏覽器的事件佇列中,事件佇列是先入先出的佇列。

那麼在js執行執行緒執行完所有指令碼空閒的時候,事件佇列中的事件回撥,會一個一個被拿出來執行。

瀏覽器有一個內部大訊息迴圈Event Loop(事件迴圈),會輪詢事件佇列並處理事件。