事件发射器是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://www.zgljl2012.com/node-jsji-chu-pian-qi-nodeyi-bu-bian-cheng-zhi-shi-jian-fa-she-qi/