這次帶給大家JavaScript運行機制之Event Loop,使用JavaScript運行機制的注意事項有哪些,下面就是實戰案例,一起來看一下。
主執行緒從"任務佇列"中讀取事件,這個過程是循環不斷的,所以整個的這種運作機制又稱為Event Loop(事件循環)。
為了更好地理解Event Loop,請看下圖
#上圖中,主執行緒運行的時候,產生堆疊(heap)和堆疊(stack),堆疊中的程式碼呼叫各種外部API,它們在"任務佇列"中加入各種事件(click,load,done)。只要堆疊中的程式碼執行完畢,主執行緒就會去讀取"任務佇列",依序執行那些事件所對應的回呼函數。
執行堆疊中的程式碼(同步任務),總是在讀取"任務佇列"(非同步任務)之前執行。請看下面這個例子。
var req = new XMLHttpRequest(); req.open('GET', url); req.onload = function (){}; req.onerror = function (){}; req.send();
上面程式碼中的req.send方法是Ajax操作向伺服器發送數據,它是一個非同步任務,意味著只有當前腳本的所有程式碼執行完,系統才會去讀取"任務佇列" 。所以,它與下面的寫法等價。
var req = new XMLHttpRequest(); req.open('GET', url); req.send(); req.onload = function (){}; req.onerror = function (){};
也就是說,指定回呼函數的部分(onload和onerror),在send()方法的前面或後面無關緊要,因為它們屬於執行棧的一部分,系統總是執行完它們,才會去讀取"任務隊列"。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是JavaScript運行機制之Event Loop的詳細內容。更多資訊請關注PHP中文網其他相關文章!