事件发射器是Node里除了回调函数外的另一十分重要的异步编程技术。 在MFC等图形界面编程库中,事件发射器是非常常见的,比如,鼠标点击事件,点击了鼠标后,就会触发鼠标点击后的函数——事件发射器触发事件,并且在事件被触发后处理它们。在Node API组件中,如HTTP服务器、TCP服务器等都被做成了事件发射器,所以掌握事件发射器的编程方法,是非常重要的。
步骤:
//事件发射器类声明
var EventEmitter = require("events").EventEmitter;
//创建事件发射器
var emitter = new EventEmitter();
//使用on添加监听器
emitter.on("hello",function(){
console.log("Hello");
});
//使用emit函数发射事件
emitter.emit("hello");
示例:
//事件发射器类声明
var EventEmitter = require("events").EventEmitter;
//创建事件发射器
var emitter = new EventEmitter();
//使用addListener添加监听器
emitter.addListener("hello",function(){
console.log("Hello");
});
//使用emit函数发射事件
emitter.emit("hello");
注册的监听器可直接带上参数,在emit发射事件时,添加上对应的参数即可。示例:
//事件发射器类声明
var EventEmitter = require("events").EventEmitter;
//创建事件发射器
var emitter = new EventEmitter();
//使用on添加监听器
emitter.on("hello",function(name,age){
console.log(name+" is "+age);
});
//使用emit函数发射事件
emitter.emit("hello","king","21");
使用removeAllListeners移除hello事件所有的监听器,使用removeListener移除hello事件特定的监听器,示例:
//事件发射器类声明
var EventEmitter = require("events").EventEmitter;
//创建事件发射器
var emitter = new EventEmitter();
//使用on添加监听器
emitter.on("hello",function(name,age){
console.log(name+" is "+age);
});
//使用emit函数发射事件
emitter.emit("hello","king","21");
//添加移除监听器的事件
emitter.on("quit",function(name){
emitter.removeAllListeners(name) ; //移除名字为name的事件监听器
});
//移除hello这一事件
emitter.emit("quit","hello");
//再调用一次看看效果(不会有任何效果,因为现在已经没有hello这个事件的监听器了)
emitter.emit("hello","king","21");
原文地址:http://blog.csdn.net/zgljl2012/article/details/44875117