node.js事件輪詢機(jī)制原理知識(shí)點(diǎn)
借助libuv庫實(shí)現(xiàn)的
概括事件輪詢機(jī)制:分為六個(gè)階段
1.timers 定時(shí)器階段
計(jì)時(shí)和執(zhí)行到點(diǎn)的定時(shí)器回調(diào)函數(shù)
2.pending callbacks
某些系統(tǒng)操作(例如TCP錯(cuò)誤類型)
3.idle,prepare
4.poll輪詢階段(輪詢隊(duì)列)
如果輪詢隊(duì)列不為空,依次同步取出輪詢隊(duì)列中第一個(gè)回調(diào)函數(shù),直到輪詢隊(duì)列為空或者達(dá)到系統(tǒng)最大限制
如果輪詢隊(duì)列為空
如果之前設(shè)置過setImmediate函數(shù),直接進(jìn)入下一個(gè)check階段,如果之前沒有設(shè)置過setImmediate函數(shù),在當(dāng)前 poll階段等待,直到輪詢隊(duì)添加回調(diào)函數(shù),就會(huì)去第一個(gè)情況執(zhí)行,如果定時(shí)器到點(diǎn)了,他也會(huì)去下一個(gè)階段
5.check查階段
執(zhí)行setImmediate設(shè)置的回調(diào)函數(shù)
6.close callbacks關(guān)閉階段
close事件回調(diào)函數(shù)
process.nextTick()的意思就是定義出一個(gè)動(dòng)作,pengd并且讓這個(gè)動(dòng)作在下一個(gè)事件輪詢的時(shí)間點(diǎn)上執(zhí)行。能在任意階段優(yōu)先執(zhí)行
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
node.js+captchapng+jsonwebtoken實(shí)現(xiàn)登錄驗(yàn)證示例
本篇文章主要介紹了node.js+captchapng+jsonwebtoken實(shí)現(xiàn)登錄驗(yàn)證示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
node.js實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Node.js接入DeepSeek實(shí)現(xiàn)流式對(duì)話功能
隨著人工智能技術(shù)的發(fā)展,越來越多的服務(wù)和應(yīng)用開始集成AI能力以提升用戶體驗(yàn),本文將介紹如何通過Node.js接入DeepSeek提供的API服務(wù),特別是其聊天完成(Chat?Completions)功能,為您的應(yīng)用增添智能對(duì)話能力,需要的朋友可以參考下2025-02-02
Node.js 實(shí)現(xiàn)簡(jiǎn)單的接口服務(wù)器的實(shí)例代碼
這篇文章主要介紹了Node.js 實(shí)現(xiàn)簡(jiǎn)單的接口服務(wù)器的實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05
Node.js使用Streams來處理文件讀寫操作的示例代碼
在Node.js中,Streams 提供了一種高效的方式來處理文件的讀寫操作,特別是對(duì)于大文件或數(shù)據(jù)流,Streams 允許你以流的方式讀寫數(shù)據(jù),這意味著數(shù)據(jù)可以分塊處理,本文介紹了在Node.js中如何使用Streams來處理文件讀寫操作,需要的朋友可以參考下2024-09-09
Node.js如何響應(yīng)Ajax的POST請(qǐng)求并且保存為JSON文件詳解
這篇文章主要介紹了關(guān)于Node.js是如何響應(yīng)Ajax的POST請(qǐng)求并且保存為JSON文件的相關(guān)資料,文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03

