這篇文章主要講解了“Node事件循環(huán)的流程是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Node事件循環(huán)的流程是什么”吧!
10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有福貢免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
我們都知道目前我們用的應(yīng)用程序多數(shù)是使用事件來(lái)驅(qū)動(dòng)的,在我們與應(yīng)用程序進(jìn)行交互的過(guò)程中,會(huì)產(chǎn)生很多很多事件,比如點(diǎn)擊、雙擊、三擊等等等,還有文件讀取完成或某些任務(wù)執(zhí)行過(guò)程中會(huì)產(chǎn)生很多事件。
我們都知道Node.js是單進(jìn)程、單線程的,卻能夠?qū)崿F(xiàn)高并發(fā),這就離不開我們的事件機(jī)制。具體來(lái)說(shuō)是通過(guò)事件循環(huán)來(lái)實(shí)現(xiàn)的,通過(guò)異步回調(diào)接口和事件驅(qū)動(dòng)就可以實(shí)現(xiàn)高并發(fā)?!就扑]學(xué)習(xí):《nodejs 教程》】
在Node.js單線程運(yùn)行時(shí),相當(dāng)于進(jìn)入了一個(gè)“死”循環(huán),在每個(gè)異步事件上的回調(diào)函數(shù)相當(dāng)于查你手機(jī)的女朋友,如果女朋友發(fā)現(xiàn)“不好”的東西(事件)發(fā)生,就和你吵架(調(diào)用回調(diào)函數(shù)——吵架函數(shù)),直到以后都沒有看到這些讓你們吵架的東西(事件)時(shí),就不再看你手機(jī)了(退出死循環(huán))。
事件循環(huán)通常還會(huì)將相應(yīng)的操作交給操作系統(tǒng)處理,我們也都知道目前操作系統(tǒng)基本上都是多線程的。也就是說(shuō)我們知道這個(gè)名為Node.js的女朋友通常不是簡(jiǎn)單看看我們手機(jī)就完了,她還聘請(qǐng)專業(yè)的監(jiān)控團(tuán)隊(duì)監(jiān)控你的手機(jī)。這樣就可以監(jiān)控團(tuán)隊(duì)多個(gè)人檢查你的手機(jī)信息(操作系統(tǒng)后臺(tái)進(jìn)行處理),當(dāng)處理完一部分信息立馬通知你女朋友(某個(gè)操作被完成,立馬通知Node.js),然后女朋友就會(huì)根據(jù)信息的性質(zhì)將打算干的事送入做事隊(duì)列(Node.js就會(huì)將相關(guān)的回調(diào)函數(shù)添加到輪詢隊(duì)列),然后一個(gè)一個(gè)的執(zhí)行。
這里有一張Node.js的事件循環(huán)簡(jiǎn)化圖:
在上圖中,每一個(gè)階段都會(huì)有一個(gè)FIFO的可執(zhí)行回調(diào)函數(shù)的隊(duì)列,通常情況下當(dāng)事件循環(huán)進(jìn)入到其中的一個(gè)階段,就會(huì)執(zhí)行該階段的操作,再執(zhí)行該階段的隊(duì)列中的回調(diào),一直到隊(duì)列結(jié)束或者達(dá)到回調(diào)數(shù)的限制,之后事件循環(huán)就會(huì)進(jìn)入下一個(gè)階段,這樣來(lái)回循環(huán)。
根據(jù)這個(gè)圖,我們可以知道事件循環(huán)的順序大概是:
收到數(shù)據(jù)(incoming data)->輪詢(poll)->檢查(check)->關(guān)閉回調(diào)(close callback)->定時(shí)器(timers)->待定回調(diào)(pending callbacks)->閑置(idle, prepare)->輪詢(poll)
感謝各位的閱讀,以上就是“Node事件循環(huán)的流程是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Node事件循環(huán)的流程是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!