這篇文章帶大家簡單了解一下Node.js中的事件循環,來看看Node.js事件循環的大概順序,希望對大家有幫助!
我們都知道目前我們使用的應用程式多數是使用事件來驅動的,在我們與應用程式互動的過程中,會產生很多很多事件,例如點擊、雙擊、三擊等等等,還有檔案讀取完成或某些任務執行過程中會產生許多事件。
我們都知道Node.js是單一進程、單執行緒的,卻能夠實現高並發,這就離不開我們的事件機制。具體來說是透過事件循環來實現的,透過非同步回調介面和事件驅動就可以實現高並發。 【推薦學習:《nodejs 教程》】
在Node.js單線程運行時,相當於進入了一個“死」循環,在每個非同步事件上的回呼函數相當於查你手機的女朋友,如果女朋友發現「不好」的東西(事件)發生,就和你吵架(調用回調函數——吵架函數) ,直到以後都沒有看到這些讓你們吵架的東西(事件)時,就不再看你手機了(退出死循環)。
事件循環通常也會將對應的操作交給作業系統處理,我們也都知道目前作業系統基本上都是多執行緒的。也就是說我們知道這個名為Node.js的女朋友通常不是簡單看看我們手機就完了,她還聘請專業的監控團隊來監控你的手機。這樣就可以監控團隊多個人檢查你的手機資訊(操作系統後台進行處理),當處理完一部分信息立刻通知你女朋友(某個操作被完成,立刻通知Node.js),然後女朋友就會根據資訊的性質將打算做的事送入做事隊列(Node.js就會將相關的回呼函數加入到輪詢隊列),然後一個一個的執行。
這裡有一張Node.js的事件循環簡化圖:
#在上圖中,每個階段都會有一個FIFO的可執行回呼函數的隊列,通常情況下當事件循環進入到其中的一個階段,就會執行該階段的操作,再執行該階段的隊列中的回調,一直到隊列結束或達到回調數的限制,之後事件循環就會進入下一個階段,這樣來回循環。
根據這個圖,我們可以知道事件循環的順序大概是:
收到資料(incoming data)->輪詢(poll)->檢查(check)-> ;關閉回呼(close callback)->定時器(timers)->待定回呼(pending callbacks)->閒置(idle, prepare)->輪詢(poll)
#更多編程相關知識,請造訪:程式設計課程! !
以上是淺談Node事件循環的大致流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!