node.js事件循環

node是單進程單線程的應用程序,但是用過事件和回調支持併發,所以性能非常高。

Node.js 的每一個 API 都是異步的,並作爲一個獨立線程運行,使用異步函數調用,並處理併發。
Node.js 基本上所有的事件機制都是用設計模式中觀察者模式實現。
Node.js 單線程類似進入一個while(true)的事件循環,直到沒有事件觀察者退出,每個異步事件都生成一個事件觀察者,如果有事件發生就調用該回調函數.

事件驅動程序
Node.js 使用事件驅動模型,當web server接收到請求,就把它關閉然後進行處理,然後去服務下一個web請求。
當這個請求完成,它被放回處理隊列,當到達隊列開頭,這個結果被返回給用戶。
這個模型非常高效可擴展性非常強,因爲webserver一直接受請求而不等待任何讀寫操作。(這也被稱之爲非阻塞式IO或者事件驅動IO)
在事件驅動模型中,會生成一個主循環來監聽事件,當檢測到事件時觸發回調函數。

//引入events模塊
var events = require('events');
//創建eventEmitter對象
var eventEmitter = new events.EventEmitter();
//創建事件處理程序
var connectHandler = function connected(){
    console.log("連接成功");
    eventEmitter.emit('data_received');
}
//綁定connection 事件處理程序
eventEmitter.on('connection',connectHandler);

//使用匿名函數綁定data_received事件
eventEmitter.on('data_received',function(){
    console.log("數據接收成功");
})
//觸發connection 事件
eventEmitter.emit('connection');
console.log("程序執行完畢");

輸出:
連接成功
數據接收成功
程序執行完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章