nodejs 中自定义事件

经常看到

req.on('error', function(){...}); 

这种代码。

 

在nodejs中,可以使用 EventEmitter来实现。

具体的关键词有如下几个:

var reqEvent = new EventEmitter();
reqEvent.on(ev, cb);
reqEvent.emit('error');

下面是这个实现方法:

var EventEmitter = require('events').EventEmitter;
var reqEvent = new EventEmitter();

var req = {
    on: function (ev, cb) {
        reqEvent.on(ev, cb);
    },
    run: function () {
        if ("fire Error") {
            reqEvent.emit('error'); //出错了
        }

        reqEvent.emit('ex'); //前任
        console.log('我是正房');
        reqEvent.emit('done'); //小三
    }
}


req.on('error', function () {
    console.log('唉呀,出错了!');
});
req.on('ex', function () {
    setTimeout(function () {
        console.log('我是前任,但我在剧本中出现晚于正房 1 秒钟。');
    }, 1000);
});
req.on('done', function () {
    setTimeout(function () {
        console.log('我是小三,但我在剧本中出现晚于正房 2 秒钟。');
    }, 2000);
});


//启动
req.run();

 

 

 

posted @ 2014-02-19 16:27  啤酒云  阅读(1019)  评论(0编辑  收藏  举报