(六)、node.js事件驱动

1、事件发射器

events是node.js的核心模块,只提供了一个对象events.EventEmitter,EventEmitter的核心就是事件的发射与事件监听的封装。EventEmitter支持若干个事件的监听,当事件发射的时候,注册到这个事件的监听器依次被调用。下面看一个例子。

var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2) {
    console.log('listener1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2) { 
   console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'byvoid', 1991);

运行结果为:

listener1 byvoid 1991
listener2 byvoid 1991

程序先为emitter注册两个事件,然后emitter进行事件的发射,接着监听器被调用。

下面我们来看下EventEmitter常用的API

EventEmitter.on(event,listener),注册事件监听。

EventEmitter.emit(event,arg...),发射事件。

EventEmitter.once(event.listener),监听器只最多被触发一次,出发后立即解除。

EventEmitter.removeListener(event,listener),移除指定的listener。

EventEmitter.removeAllListeners(event),移除所有的监听器。

2、error事件

    EventEmitter定义了一个特殊的事件error,当error发射的时候,EventEmitter规定如果没有响应的监听器,node.js会把它当作异常处理。

    大多是的时候,我们不会直接使用EventEmitter,而是在对象中继承它。原因有两点。首先,具有某个实体功能的对象实现事件符合语意,其次,js支持部分多继承。继承自EventEmitter不会打乱对象原有的继承关系。

你可能感兴趣的:(node.js)