node.js模块之events

events是node的最核心模块,没有之一。

先来个例子:

var events = require("events");
var emitter = new events.EventEmitter();
emitter.on("dataReady", function(data){ // 绑定事件回调函数
console.log(data);
});
emitter.emit("dataReady", "this is data"); //触发事件node中许多对象都会发布一个事件,例如每当有链接建立net.Server发布一个事件、当文件打开时fs.readStream发布一个事件。所有发布事件的对象都是events.EventEmitter实例。一般事件名字建议使用驼峰标识。

当EventEmitter类实例遇到一个error的时候,典型的行为是发布一个error事件。在node中error事件比较特殊,如果没有为EventEmitter实例绑定一个error事件的回调函数,当遇到错误的时候默认的行为是打印错误堆栈信息后退出。

当给EventEmitter实例绑定一个事件回调函数或者解除绑定一个回调函数时,EventEmitter实例会分别发布newListener事件和removeListener事件, 并传递所绑定的事件名字和回调函数作为回调函数的参数。

EventEmitter可用方法:

1、addListener和on:绑定事件回调函数。

2、once:绑定事件回调函数,执行一次后自动解除绑定。

3、removeListener:解除绑定指定事件的指定回调函数。

4、removeAllListeners:解除参数指定的事件的所有回调函数,若不指定参数则解除所有事件的所有回调函数。

5、setMaxListeners:默认情况下,指定事件绑定的回调函数超过10个node将会打印一条警告信息。这是帮助查找内存泄漏的一个手段,当然不是所有的事件都应该被限制为10,可以通过这个函数来修改这一限制,如果设置为0则为无限制。

6、listeners:返回指定事件的回调函数数组。

7、emit:发布指定事件,第一参数为事件名字,其余参数为参数。

推荐文章