Node.js的事件处理

  从windows系统诞生以来,事件驱动成为最普遍的现象。Node.js也是事件驱动的,这看起来是理所当然的事。但Node.js的事件处理在软件架构里提到了一个更高的高度:基于事件驱动的软件架构。

  nodejs事件的核心是EventEmitter。很多nodejs对象继承自EventEmitter,用来处理事件,及回调。

 var util = require("util");
 var events = require("events");//EventEmitter通过events模块来访问
 
 function MyStream() {//新建一个类
     events.EventEmitter.call(this);
 }
 
 util.inherits(MyStream, events.EventEmitter);//使这个类继承EventEmitter
 
MyStream.prototype.write = function(data) {//定义一个新方法
     this.emit("data", data);//在此触发名为"data"事件
 }
 
 var stream = new MyStream();
 
stream.on("data", function(data) {//注册监听器,监听名为"data"事件
     console.log('Received data: "' + data + '"');
 })
stream.write("It works!"); // Received data: "It works!"

以上的例子说明了EventEmitter的用法。从原理来说,和c#的event实现方法一样的,但使用上有一点不一样:c#的event是通过为类创建一个event属性,燃后对event属性进行事件绑定实现事件驱动,但nodejs是继承EventEmitter实现事件驱动

posted on 2013-06-03 09:03  钟湘光  阅读(283)  评论(0编辑  收藏  举报

导航