欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          了解Node中的事件循環(huán)、process.nextTick()

          本篇文章給大家了解一下Nodejs中的事件循環(huán),解析下事件循環(huán)機(jī)制、process.nextTick()等,希望對大家有所幫助!

          了解Node中的事件循環(huán)、process.nextTick()

          什么是事件循環(huán)

          事件循環(huán)是 Node.js 處理非阻塞 I/O 操作的機(jī)制——盡管 JavaScript 是單線程處理的——當(dāng)有可能的時候,它們會把操作轉(zhuǎn)移到系統(tǒng)內(nèi)核中去。

          既然目前大多數(shù)內(nèi)核都是多線程的,它們可在后臺處理多種操作。當(dāng)其中的一個操作完成的時候,內(nèi)核通知 Node.js 將適合的回調(diào)函數(shù)添加到輪詢隊(duì)列中等待時機(jī)執(zhí)行。我們在本文后面會進(jìn)行詳細(xì)介紹。

          事件循環(huán)機(jī)制解析

          當(dāng) Node.js 啟動后,它會初始化事件循環(huán),處理已提供的輸入腳本(或丟入 REPL,本文不涉及到),它可能會調(diào)用一些異步的 API、調(diào)度定時器,或者調(diào)用 process.nextTick(),然后開始處理事件循環(huán)。

          下面的圖表展示了事件循環(huán)操作順序的簡化概覽。

             ┌───────────────────────────┐ ┌─>│           timers          │ │  └─────────────┬─────────────┘ │  ┌─────────────┴─────────────┐ │  │     pending callbacks     │ │  └─────────────┬─────────────┘ │  ┌─────────────┴─────────────┐ │  │       idle, prepare       │ │  └─────────────┬─────────────┘      ┌───────────────┐ │  ┌─────────────┴─────────────┐      │   incoming:   │ │  │           poll            │<─────┤  connections, │ │  └─────────────┬─────────────┘      │   data, etc.  │ │  ┌─────────────┴─────────────┐      └───────────────┘ │  │           check           │ │  └─────────────┬─────────────┘ │  ┌─────────────┴─────────────┐ └──┤      close callbacks      │    └───────────────────────────┘

          注意:每個框被稱為事件循環(huán)機(jī)制的一個階段。

          每個階段都有一個 FIFO 隊(duì)列來執(zhí)行回調(diào)。雖然每個階段都是特殊的,但通常情況下,當(dāng)事件循環(huán)進(jìn)入給定的階段時,它將執(zhí)行特定于該階段的任何操作,然后執(zhí)行該階段隊(duì)列中的回調(diào),直到隊(duì)列用盡或最大回調(diào)數(shù)已執(zhí)行。當(dāng)該隊(duì)列已用盡或達(dá)到回調(diào)限制,事件循環(huán)將移動到下一階段,等等。

          由于這些操作中的任何一個都可能調(diào)度_

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號