在計算機領域,事件環,或者被稱為訊息分發器,訊息環,訊息泵或者運行環這些定義不過是一個程式結構體,用以在程式中等待,分發事件或者訊息。它的工作方式是向內部或者外部的“事件提供方”發出請求(通常採取封鎖請求的方式,直到有事件發生),然後再呼叫相應的事件處理器(又稱“事件的分發“)。 事件環通常於編程設計模式” 反應器模式“相結合,前提是事件提供方遵循相同的檔案接口, 這樣事件提供方就可以被選擇, '被輪詢' (Unix系統這樣用被動方式稱呼,現在也可以直接叫 輪詢). 事件環幾乎總是對訊息發出方進行異步操作。
當一個事件流被用作程式的中心控制流程, 事實上它通常做這個用途, 這時它又可以被稱為”主環“或者”主事件環“。本文標題稱為事件環貼切一點,因為這樣的事件環一直是處在程式的最上的控制層面的。
基本介紹
- 中文名:事件環
- 外文名:Event ring
介紹
- 所有同步任務都在主執行緒上執行,形成一個執行棧
- 主執行緒之外,還存在一個任務佇列。只要異步任務有了運行結果,就在任務佇列之中放置一個事件。
- 一旦執行棧中的所有同步任務執行完畢,系統就會讀取任務佇列,看看裡面有哪些事件。那些對應的異步任務,於是結束等待狀態,進入執行棧,開始執行。
- 主執行緒不斷重複上面的第三步。
時間循環
function readi console. log(1) setTimeout(function (( console. log(2) console. log(3);reado
- setImmediate:把回調函式放在事件佇列的尾部
- setTimeout:定時器
- setInterval:定時器
- process.nextTick:把回調函式放在當前執行棧的底部
- Promise: