免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

JavaScript中EventLoop指的是什么

這篇文章主要介紹了JavaScript中Event Loop指的是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

目前創新互聯建站已為千余家的企業提供了網站建設、域名、雅安服務器托管、網站托管、企業網站設計、云龍網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

什么是Event Loop?

js的單線程是他的任務棧是單線程,但他處理異步i/o的方法是依賴libuv開啟線程池去處理,完成之后任務加到poll queue里,然后等任務棧的任務為空或事件到達閥值時,把poll queue和定時器的任務加到任務棧里,繼續這個循環,這就是大體上的js的Event Loop。

結構

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

timer:
定時任務,當到達閥值時,他不會立即執行,會等待任務棧的任務會阻塞他。

pending callbacks:
此階段執行某些系統操作(例如TCP錯誤類型)的回調。例如,如果TCP套接字在嘗試連接時收到,則某些*nix系統希望等待報告錯誤。這將排隊等待在掛起的回調階段執行。

pull:
這個階段有兩個主要功能:
 計算它應該阻塞和輪詢I / O的時間,然后
 處理輪詢隊列中的事件。
當事件循環進入輪詢階段并且沒有計劃定時器時,將發生以下兩種情況之一:

如果輪詢隊列不為空,則事件循環將遍歷其同步執行它們的回調隊列,直到隊列已用盡,或者達到系統相關的硬限制。

如果輪詢隊列為空,則會發生以下兩種情況之一:

如果腳本已執行setImmediate,則事件循環將結束poll階段并繼續執行check階段以執行這些調度腳本。

如果腳本沒有執行setImmediate,事件循環將等待回調被添加到poll queue中,然后立即執行。

一旦poll queue為空事件循環將檢查timer,如果一個或多個定時器準備就緒,事件循環將回繞到timer階段以執行那些timer的回調。

check
此階段允許人員在輪詢階段完成后立即執行回調 。如果輪詢階段變為空閑并且存在setImmediate任務,那么事件循環直接跳到check執行而不是阻塞在poll階段等待回調被加入。

setImmediate實際上是一個特殊的計時器,它在事件循環的一個單獨階段運行。它使用libuv API來調度在輪詢階段完成后執行的回調。

close callbacks

如果socket或handle突然關閉(例如socket.destroy()),則該 'close'事件將在此階段發出。否則它將通過發射process.nextTick()。

感謝你能夠認真閱讀完這篇文章,希望小編分享JavaScript中Event Loop指的是什么內容對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,遇到問題就找創新互聯,詳細的解決方法等著你來學習!

文章標題:JavaScript中EventLoop指的是什么
文章地址:http://newbst.com/article26/jhspjg.html

成都網站建設公司_創新互聯,為您提供App開發、移動網站建設、Google商城網站、網站導航、建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計