溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Node事件循環(huán)的流程是什么

發(fā)布時間:2021-10-28 10:04:07 來源:億速云 閱讀:156 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“Node事件循環(huán)的流程是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Node事件循環(huán)的流程是什么”吧!

Node事件循環(huán)的流程是什么

我們都知道目前我們用的應(yīng)用程序多數(shù)是使用事件來驅(qū)動的,在我們與應(yīng)用程序進(jìn)行交互的過程中,會產(chǎn)生很多很多事件,比如點擊、雙擊、三擊等等等,還有文件讀取完成或某些任務(wù)執(zhí)行過程中會產(chǎn)生很多事件。

我們都知道Node.js是單進(jìn)程、單線程的,卻能夠?qū)崿F(xiàn)高并發(fā),這就離不開我們的事件機(jī)制。具體來說是通過事件循環(huán)來實現(xiàn)的,通過異步回調(diào)接口和事件驅(qū)動就可以實現(xiàn)高并發(fā)?!就扑]學(xué)習(xí):《nodejs 教程》】

事件循環(huán)

在Node.js單線程運行時,相當(dāng)于進(jìn)入了一個“死”循環(huán),在每個異步事件上的回調(diào)函數(shù)相當(dāng)于查你手機(jī)的女朋友,如果女朋友發(fā)現(xiàn)“不好”的東西(事件)發(fā)生,就和你吵架(調(diào)用回調(diào)函數(shù)——吵架函數(shù)),直到以后都沒有看到這些讓你們吵架的東西(事件)時,就不再看你手機(jī)了(退出死循環(huán))。

事件循環(huán)通常還會將相應(yīng)的操作交給操作系統(tǒng)處理,我們也都知道目前操作系統(tǒng)基本上都是多線程的。也就是說我們知道這個名為Node.js的女朋友通常不是簡單看看我們手機(jī)就完了,她還聘請專業(yè)的監(jiān)控團(tuán)隊監(jiān)控你的手機(jī)。這樣就可以監(jiān)控團(tuán)隊多個人檢查你的手機(jī)信息(操作系統(tǒng)后臺進(jìn)行處理),當(dāng)處理完一部分信息立馬通知你女朋友(某個操作被完成,立馬通知Node.js),然后女朋友就會根據(jù)信息的性質(zhì)將打算干的事送入做事隊列(Node.js就會將相關(guān)的回調(diào)函數(shù)添加到輪詢隊列),然后一個一個的執(zhí)行。

這里有一張Node.js的事件循環(huán)簡化圖:

Node事件循環(huán)的流程是什么

在上圖中,每一個階段都會有一個FIFO的可執(zhí)行回調(diào)函數(shù)的隊列,通常情況下當(dāng)事件循環(huán)進(jìn)入到其中的一個階段,就會執(zhí)行該階段的操作,再執(zhí)行該階段的隊列中的回調(diào),一直到隊列結(jié)束或者達(dá)到回調(diào)數(shù)的限制,之后事件循環(huán)就會進(jìn)入下一個階段,這樣來回循環(huán)。

根據(jù)這個圖,我們可以知道事件循環(huán)的順序大概是:

收到數(shù)據(jù)(incoming data)->輪詢(poll)->檢查(check)->關(guān)閉回調(diào)(close callback)->定時器(timers)->待定回調(diào)(pending callbacks)->閑置(idle, prepare)->輪詢(poll)

感謝各位的閱讀,以上就是“Node事件循環(huán)的流程是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Node事件循環(huán)的流程是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI