程序员人生 网站导航

nodejs的事件EventEmitter

栏目:互联网时间:2015-05-08 07:38:45

直接上代码:

// 得到EventEmitter对象 var EventEmitter = require('events').EventEmitter; var eventEmitter = new EventEmitter(); var EVENT_NAME = 'some_event'; // 事件名 // ********************************************************** // 注册1个事件some_event // ********************************************************** // 回调函数 var callback = function(arg1, arg2){ console.log(EVENT_NAME + ' listener1' + arg1 + ' ' + arg2); }; // 参数1:事件名,参数2:回调函数 eventEmitter.on(EVENT_NAME, callback); // 单次事件,监听器最多只会触发1次,触发后立刻消除该监听器 eventEmitter.once(EVENT_NAME,function(arg1, arg2){ console.log(EVENT_NAME + ' listener2' + arg1 + ' ' + arg2); }); // ********************************************************** // 利用延时函数,触发事件 // ********************************************************** setTimeout(function(){ eventEmitter.emit(EVENT_NAME, 'One', 1); },1000); setTimeout(function(){ eventEmitter.emit(EVENT_NAME, 'Two', 2); },2000); // 移除事件 setTimeout(function(){ console.log('remove'); eventEmitter.removeListener(EVENT_NAME, callback);// 移除事件指定的监听器 eventEmitter.removeAllListeners(EVENT_NAME);// 移除事件的所有监听器 },3000); // error 事件:EventEmitter 规定如果没有响 应的监听器,Node.js 会把它当作异常,退出程序并打印调用栈。 // 所以1般要为会发射 error 事件的对象设置监听器,避免遇到毛病后全部程序崩溃

输出结果:



首先我们require了事件模块,定义了时间对象,然后注册了1个事件及其回调。

最后,我们利用延时函数来控制时间的触发。

可以看到,注册的单次事件触发1次就会被移除。

而普通事件,每次都会被触发。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐