nodejs是基于事件驱动I/O的服务器端js运行环境,事件处理跟它息息相关。列如:net.server 每次连接都会分发一个事件,fs.readStream每次在文件打开的时候就是发出一个事件。 所有的这些事件都是类events.EventEmitter的实例。

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

每个events.EventEmitter的实例发生错误时,会发出一个error事件,node会别处 理这个事件。如果没有程序没有对个事件进行监听,则会打印栈追踪信息,然后退出程序。

EventEmitter会在添加listener时触发newListener事件,删除时会触发removeListener 事件。

一些api:

  • emitter.add(event, listener)
  • emitter.on(event, listener)
  • emitter.once(event, listener)
  • emitter.removeListener(event, listener)
  • emitter.removeAllListeners(event)
  • emitter.listeners(event)
  • emitter.emit(event[, arg1[, arg2[, …]]])
  • emitter.setMaxListeners(n)
  • EventEmitter.defaultMaxListeners
  • EventEmitter.listenerCount(emitter, event)