成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

node.js事件隊(duì)列有幾個(gè)階段

node.js事件隊(duì)列有6個(gè)階段:1、“timers”階段;2、“I/O callbacks”階段;3、“idle, prepare”階段;4、“poll”階段;5、“check”階段;6、“close callbacks”階段。

node.js事件隊(duì)列有幾個(gè)階段

本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。

Node里的事件隊(duì)列和瀏覽器中的差異性還是比較大的,但是共同點(diǎn)就是宏任務(wù)和微任務(wù)的機(jī)制,是一樣的,如圖是關(guān)于node的宏任務(wù)與微任務(wù)分類。
node.js事件隊(duì)列有幾個(gè)階段
nexttick會(huì)在node的每一次事件開啟時(shí)最先執(zhí)行(微任務(wù)最高優(yōu)先級(jí))。

而關(guān)于node事件隊(duì)列可分為如下6個(gè)階段:
node.js事件隊(duì)列有幾個(gè)階段

1、timers 階段:這個(gè)階段執(zhí)行timer(setTimeout、setInterval)的回調(diào)

2、I/O callbacks 階段:執(zhí)行一些系統(tǒng)調(diào)用錯(cuò)誤,比如網(wǎng)絡(luò)通信的錯(cuò)誤回調(diào)

3、idle, prepare 階段:僅node內(nèi)部使用

4、poll 階段:獲取新的I/O事件, 適當(dāng)?shù)臈l件下node將阻塞在這里

5、check 階段:執(zhí)行 setImmediate() 的回調(diào)

6、close callbacks 階段:執(zhí)行 socket 的 close 事件回調(diào)

我們重點(diǎn)看timers、poll、check這3個(gè)階段就好,因?yàn)槿粘i_發(fā)中的絕大部分異步任務(wù)都是在這3個(gè)階段處理的。

timers 階段

timers 是事件循環(huán)的第一個(gè)階段,Node 會(huì)去檢查有無已過期的timer,如果有則把它的回調(diào)壓入timer的任務(wù)隊(duì)列中等待執(zhí)行,事實(shí)上,Node 并不能保證timer在預(yù)設(shè)時(shí)間到了就會(huì)立即執(zhí)行,因?yàn)镹ode對(duì)timer的過期檢查不一定靠譜,它會(huì)受機(jī)器上其它運(yùn)行程序影響,或者那個(gè)時(shí)間點(diǎn)主線程不空閑。比如下面的代碼,setTimeout() 和 setImmediate() 的執(zhí)行順序是不確定的。

setTimeout(() => {   console.log('timeout')}, 0)setImmediate(() => {   console.log('immediate')})

如上段代碼是個(gè)大坑,node無法確定每次事件隊(duì)列建立完畢的具體時(shí)間,可能這一次是5ms(timer被壓入棧,在第二輪才會(huì)執(zhí)行),下一次是1ms(timer在第一輪就被捕獲執(zhí)行了)。因此輸出結(jié)果順序不確定,這也是具體原因,而當(dāng)嵌套一個(gè)異步的操作把他們包裹起來,就會(huì)100%保證immediate先執(zhí)行。

fs.readFile('./index.html',(err,result)=>{ 	setTimeout(() => { 	  console.log('timeout') 	}, 0) 	 	setImmediate(() => { 	  console.log('immediate') 	})})

這是因?yàn)橛捎谠诘谝惠單床蹲皆趖imer,所以直接到了poll階段進(jìn)行io的回調(diào)捕捉,當(dāng)io結(jié)束后進(jìn)入check階段,就會(huì)執(zhí)行immediate,而timeout會(huì)在第二輪最開始的timer執(zhí)行。

poll 階段

poll 階段主要有2個(gè)功能:
1.處理 poll 隊(duì)列的事件
2.當(dāng)有已超時(shí)的 timer,執(zhí)行它的回調(diào)函數(shù)

even loop將同步執(zhí)行poll隊(duì)列里的回調(diào),直到隊(duì)列為空或執(zhí)行的回調(diào)達(dá)到系統(tǒng)上限(上限具體多少未詳),接下來even loop會(huì)去檢查有無預(yù)設(shè)的setImmediate(),分兩種情況:

1.若有預(yù)設(shè)的setImmediate(), event loop將結(jié)束poll階段進(jìn)入check階段,并執(zhí)行check階段的任務(wù)隊(duì)列
2.若沒有預(yù)設(shè)的setImmediate(),event loop將阻塞在該階段等待

注意一個(gè)細(xì)節(jié),沒有setImmediate()會(huì)導(dǎo)致event loop阻塞在poll階段,這樣之前設(shè)置的timer豈不是執(zhí)行不了了?所以咧,在poll階段event loop會(huì)有一個(gè)檢查機(jī)制,檢查timer隊(duì)列是否為空,如果timer隊(duì)列非空,event loop就開始下一輪事件循環(huán),即重新進(jìn)入到timer階段。

check 階段

setImmediate()的回調(diào)會(huì)被加入check隊(duì)列中, 從event loop的階段圖可以知道,check階段的執(zhí)行順序在poll階段之后。

小結(jié)

node中每一輪大的事件循環(huán)中劃分出了六個(gè)場(chǎng)景,每個(gè)場(chǎng)景需要按順序執(zhí)行,比瀏覽器會(huì)更加細(xì)化,并且在每一個(gè)階段都會(huì)進(jìn)行宏任務(wù)和微任務(wù)的處理,這是比較特殊的一點(diǎn)。

1、Node.js 的事件循環(huán)分為6個(gè)階段

2、瀏覽器和Node 環(huán)境下,microtask 任務(wù)隊(duì)列的執(zhí)行時(shí)機(jī)不同

Node.js中,microtask 在事件循環(huán)的各個(gè)階段之間執(zhí)行

瀏覽器端,microtask 在事件循環(huán)的 macrotask 執(zhí)行完之后執(zhí)行

3、遞歸的調(diào)用process.nextTick()會(huì)導(dǎo)致I/O starving,官方推薦使用setImmediate()

4、每個(gè)事件階段nexttick在微任務(wù)中的優(yōu)先級(jí)是最高的。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
欧美XXXX做受欧美1314| 日本最大胆的人文体艺术| 欧美18VIDEOSEX性极品| 全黄H全肉边做边吃奶视频| 人人做人人澡人人爽欧美| 私人影院家庭影院| 亚洲AV福利天堂一区二区三| 亚洲欧美V国产蜜芽TV| 在线播放五十路熟妇| CAOPORN国产精品免费视频| 北条麻妃在线一区二区| 国产盗摄XXXX视频XXXⅩ| 狠狠色婷婷久久综合频道毛片 | 中文字幕久久精品波多野结百度 | 人妻丰满熟妇AV无码区免| 少妇人妻综合久久中文888| 性姿势108式大全图解| 亚洲最大AV在线| XXX激情影院亚洲AV| 国产成人午夜福利在线小电影| 黄 色 网 站 免 费 涩涩屋| 免费A级毛片无码A∨蜜芽| 日韩AV无码成人网站| 亚洲ⅤA中文字幕无码毛片| 夜夜嗨AV熟妇人妻涩爱AV| ZOOM与人性ZOOM1区别| 国产精品边做奶水狂喷无码 | 国产美女高潮视频| 老师今晚让你爽个够| 日韩无码一区视频| 亚洲丰满少妇多毛大隂户| 18国产精品白浆在线观看免费| 成在人线AV无码免费高潮水老板| 国精品99久9在线 | 免费| 妺妺窝人体色WWW国产馆在线| 日韩综合无码一区二区| 亚洲狠狠婷婷综合久久蜜芽| FREE嫩白18SEX性HD处| 国产麻豆剧果冻传媒| 蜜桃AV无码免费看永久| 国内精品久久久久电影院| 一本大道香蕉在线精品| 爆乳无码AV一区二区三区小说| 国产女人18毛片水真多18精品| 邻居一晚让我高潮3次正常吗 | 成年视频APP短视频在线观看| 国内精品久久久久影院中文字幕| 农村岳的肥白大腚| 性妇WBBBB搡BBBB嗓小说| 40岁成熟女人牲交片20分钟| 国产精品亚洲专区无码蜜芽| 奶酥1V2双C高| 亚洲AV高清在线一区二区三区| AV无码人妻精品丰满熟妇区| 国内精品久久久久久99| 欧美性XXXX极品少妇| 亚洲成AV人片在线观看福利| 啊灬啊灬啊灬高潮了听书最新章节| 好大好深好猛好爽视频免费| 人妻少妇AV无码一区二区| 亚洲精品嫩草研究院久久| 成人AV在线一区二区三区| 久久久久久久久久精品电影| 天美传媒蜜桃传媒精东豆| 中文字幕四区五区六区蜜桃| 国产日产欧产精品精品AI| 漂亮人妻中文字幕丝袜| 亚洲日本乱码一区二区在线二产线 | 久久精品国产亚洲AV麻| 熟妇高潮喷沈阳45熟妇高潮喷| 制服视频在线一区二区| 国产思思99RE99在线观看| 人妻丰满熟妇AV无码区不卡| 亚洲综合一区国产精品| 国产精品一线二线三线精华液| 欧美性猛交XXXX乱大交视频 | 偷窥丶偷拍丶妓女丶自由| 99久久国产露脸国语对白| 精品国产一区二区三区无码| 少妇性SEXBBWZⅩX| 99热热久久这里只有精品68| 精品久久香蕉国产线看观看亚洲| 少妇伦子伦精品无码STYLES| AAA欧美色吧激情视频| 精品亚洲成AV人在线观看| 无码人妻一区二区免费AV| 把腿张开老子臊烂你的漫画| 美女无遮挡免费视频网站| 亚洲成aV人无码| 国产国语对白又大又粗又爽| 人妻熟妇av又粗又爽| 中文乱码字幕视频观看网站免费 | 岛国AV在线无码播放| 欧美A片XⅩX黑人性受| 亚洲综合激情五月丁香六月| 国产一精品一AV一免费| 色欲AⅤ亚洲情无码AV| CAOPORM-超频在线视频| 麻花传媒MV一二三区别在哪里看 | 午夜不卡AV免费| 夫妇交换性三中文字幕| 人妻巨大乳一二三区麻豆| 1000部啪啪未满十八勿入| 久久精品国产一区二区三区肥胖| 亚洲AV中文无码乱人伦在线R| 国产精品国产精品偷麻豆| 色偷偷888欧美精品久久久| GOGO人体大胆瓣开下部L| 免费人成在线观看网站| 一二三四社区在线高清观看| 精品丝袜人妻久久久久久| 亚洲AV无码成人网站久久精品大| 国产精品成人VA在线播放| 少洁白妇无删减全文阅读| 产后漂亮奶水人妻| 人妻av一区二区三区| 99热精品国产三级在线| 妺妺窝人体色www在线观看婚闹| 英语老师没戴套让我C了一节课 | 国产乱子伦精品免费无码专区| 四虎成人精品国产永久免费无码| 成人乱码一区二区三区AV| 日本适合十八岁以上的护肤品| Xx性欧美肥妇精品久久久久久久久 | 国产精品网站在线观看免费传媒| 体验区试看120秒啪啪免费| 成人片黄网站色多多WWW| 日产精品一线二线三线京东| 把腿扒开让我舔免费视频| 热99RE久久精品| 被吊起来张开腿供人玩弄| 欧美性色XXⅩXXA片HD| JAZZJAZZJAZZ日本| 人妻少妇中文字幕久久| 插插射啊爱视频日A级| 日韩Av无码一区二区| 成人无码一区二区三区| 少妇被CAO高潮呻吟声| 国产成人精品日本亚洲专区不卡| 玩弄三个高大的熟妇赶尸艳谈| 国产精品拍天天在线| 亚洲AV秘 无码一区二区三密桃| 国产综合18久久久久久| 亚洲国产精品无码一区二区三区| 精品少妇爆乳无码AⅤ区| 野花影视免费观看电视剧| 麻豆熟妇人妻XXXXXX| 24小时最新在线视频免费观看 | 久久亚洲精品无码AV红樱桃| 曰本A级毛片无卡免费视频VA| 老熟女重囗味HDXX70星空| 337P人体粉嫩胞高清大图AV| 人妻丝袜中文无码AV影音先锋专| 岛国无码AⅤ片在线观看| 无码人妻ΑⅤ免费一区二区三区| 国产中年熟女高潮大集合| 亚洲色欲色欲WWW在线看小说| 烂货我捏烂你的奶| EEUSS影院WWW在线观看| 色诱久久久久综合网YWWW| 国产精品特级毛片一区二区| 亚洲国产精品无码久久九九大片| 久久午夜福利无码1000合集| 99久久精品免费观看国产| 色综合视频一区中文字幕| 国产最变态调教视频| 又湿又紧又大又爽又A视频| 强奷秘书吸乳免费观看| 国产成人无码AⅤ片在线观看导航 国产成人无码AⅤ片在线观看 | 久久精品夜色噜噜亚洲A∨| 7777精品伊久久久大香线蕉| 日日噜噜夜夜爽爽| 国产熟妇XXXXXⅩ性Ⅹ交| 一本丁香综合久久久久不卡网站 | A级毛片高清免费播放| 少女たちよ在线观看动漫4集免费| 国产又色又刺激高潮视频| 在我们寝室当寄吧套子怎么样| 亲孑伦视频一区二区三区| 国产精品久久久久久久久爆乳| 亚洲色偷偷综合亚洲AV伊人蜜桃| 欧美肥妇多毛BBW| 国产精华液一线二线三线区别| 亚洲欧洲日产国码无码久久99| 女人下面被舔视频免费播放电影| 国产AV精品白浆一区二| 亚洲人成国产精品无码果冻| 琪琪电影网WWW888DVDC| 国产无遮挡又黄又爽无VIP| 正在播放国产对白孕妇作爱| 色噜噜狠狠一区二区三区| 精品久久久久久久久中文字幕| 99精产国品一二三产区区别电影| 我和丰满女教练在线观看| 久久久久久久久久久大尺度免费视 | 青草草97久热精品视频| 国产无套粉嫩白浆在线观看| 中文字幕乱偷无码动漫AV| 无码丰满熟妇浪潮一区二区AV| 麻豆传播媒体APP官网在线观看|