node.js是單進程單線程應(yīng)用程序点晴,通過事件和回調(diào)支持并發(fā)妖枚。
node.js的沒一個API都是異步的鳍寂,并作為一個獨立線程運行仅叫,使用異步函數(shù)調(diào)用帜篇,并處理并發(fā)
node.js基本上所有事件機制都是用的觀察者模式實現(xiàn)。
node.js單線程類似進入一個while(true)的時間循環(huán)诫咱,直到?jīng)]有事件觀察者退出笙隙,每個異步事件都生成一個事件觀察者,如果有事件發(fā)生就調(diào)用該回調(diào)函數(shù)坎缭。
node.js使用的是事件驅(qū)動模型竟痰,有一個主循環(huán)來監(jiān)聽事件,當(dāng)檢測到事件時觸發(fā)回調(diào)函數(shù)掏呼。
實例:
// 引入 events 模塊
var events = require('events');
// 創(chuàng)建 eventEmitter 對象
var eventEmitter = new events.EventEmitter();
// 創(chuàng)建事件處理程序
var connectHandler = function connected() {
console.log('連接成功坏快。');
// 觸發(fā) data_received 事件
eventEmitter.emit('data_received');
}
// 綁定 connection 事件處理程序
eventEmitter.on('connection', connectHandler);
// 使用匿名函數(shù)綁定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('數(shù)據(jù)接收成功。');
});
// 觸發(fā) connection 事件
eventEmitter.emit('connection');
console.log("程序執(zhí)行完畢憎夷。");
F43BE50E-B633-4BE8-AA07-E66BA195467D.png