這篇文章跟大家介紹一下node.js中的事件循環,看看事件循環模型、事件循環各階段,並分享兩道關於事件循環的面試題,我們一起來看看吧!
JavaScript引擎本身不會實作事件循環機制。瀏覽器中的事件循環由瀏覽器實現的,NodeJS中事件循環主要是由底層Libuv庫實現的。
Libuv函式庫是事件驅動的,其封裝和統一了不同平台的API實作。 NodeJS的跨平台和事件循環機制都是透過Libuv函式庫實現的。 【推薦學習:《nodejs 教學》】
#以上分四個步驟:
##1、NodeJS的V8引擎解析JavaScript程式碼,然後呼叫Node API2、NodeAPI將任務分配給Libuv庫處理,3、Libuv中透過事件循環機制管理這些任務的執行,處理結束後將結果傳回給V8引擎。 4、V8引擎回呼處理Libuv回傳每個階段都會執行目前階段的任務佇列,然後再執行目前階段的微任務佇列,只有執行完所有微任務才會進行入下一階段。
瀏覽器中事件循環差異:瀏覽器中沒有分成多個階段;優先順序:同步程式碼,微任務,巨集任務瀏覽器中,巨集任務可能會有多個佇列,但是微任務只有一個,每次都會先執行完微任務再執行巨集任務
問題1:你對NodeJS的事件循環的理解?
回答:我對事件循環的理解Node是單線程的,主線程將所有任務都放在循環隊列中,然後由底層的libuv庫從循環事件隊列中取出任務分配給不同的執行緒去處理,主執行緒同時也會進行回呼處理,整個過程形成事件循環。 與瀏覽器事件循環不同點:1、瀏覽器沒有分割多個階段2、瀏覽器任務優先:同步程式碼,微任務,宏任務題2:事件佇列中的任務執行順序?
回答:NodeJS事件循環是分割多個階段,執行順序是:一個階段執行完成後,再執行微任務,然後再進行下一階段的執行。 更多程式相關知識,請造訪:程式設計入門! !
以上是一文搞懂node.js中的事件循環的詳細內容。更多資訊請關注PHP中文網其他相關文章!