Node.js 是一個(gè)基于Chrome JavaScript 運(yùn)行時(shí)建立的一個(gè)平臺。

Node.js是一個(gè)事件驅(qū)動(dòng)I/O服務(wù)端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非??欤阅芊浅:?。

Node.js 事件循環(huán) 語法

Node.js 是單進(jìn)程單線程應(yīng)用程序,但是因?yàn)?V8 引擎提供的異步執(zhí)行回調(diào)接口,通過這些接口可以處理大量的并發(fā),所以性能非常高。

Node.js 幾乎每一個(gè) API 都是支持回調(diào)函數(shù)的。

Node.js 基本上所有的事件機(jī)制都是用設(shè)計(jì)模式中觀察者模式實(shí)現(xiàn)。

Node.js 單線程類似進(jìn)入一個(gè)while(true)的事件循環(huán),直到?jīng)]有事件觀察者退出,每個(gè)異步事件都生成一個(gè)事件觀察者,如果有事件發(fā)生就調(diào)用該回調(diào)函數(shù).

Node.js 事件循環(huán) 示例

創(chuàng)建 main.js 文件,代碼如下所示:

// 引入 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í)行完畢。");