码迷,mamicode.com
首页 > Web开发 > 详细

nodejs的事件EventEmitter

时间:2015-04-30 16:16:25      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:nodejs

直接上代码:

// 得到EventEmitter对象
var EventEmitter = require('events').EventEmitter;
var eventEmitter = new EventEmitter();

var EVENT_NAME = 'some_event'; // 事件名

// **********************************************************
// 注册一个事件some_event
// **********************************************************
// 回调函数
var callback = function(arg1, arg2){
    console.log(EVENT_NAME + ' listener1' + arg1 + ' ' + arg2);
};
// 参数1:事件名,参数2:回调函数
eventEmitter.on(EVENT_NAME, callback);

// 单次事件,监听器最多只会触发一次,触发后立刻解除该监听器
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 会把它当作异常,退出程序并打印调用栈。
// 所以一般要为会发射 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃

输出结果:

技术分享


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

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

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

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

nodejs的事件EventEmitter

标签:nodejs

原文地址:http://blog.csdn.net/xufeng0991/article/details/45394877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!