node.js中的emitter.on方法使用说明

  方法说明:

  为指定事件注册一个监听器。

  语法:

  

复制代码 代码如下:

  emitter.on(event, listener)

  emitter.addListener(event, listener)

  接收参数:

  event            (string)             事件类型

  listener         (function)         触发事件时的回调函数

  例子:

  

复制代码 代码如下:

  server.on('connection', function (stream) {

  console.log('someone connected!');

  });

  源码:

  

复制代码 代码如下:

  EventEmitter.prototype.addListener = function(type, listener) {

  var m;

  if (!util.isFunction(listener))

  throw TypeError('listener must be a function');

  if (!this._events)

  this._events = {};

  // To avoid recursion in the case that type === "newListener"! Before

  // adding it to the listeners, first emit "newListener".

  if (this._events.newListener)

  this.emit('newListener', type,

  util.isFunction(listener.listener) ?

  listener.listener : listener);

  if (!this._events[type])

  // Optimize the case of one listener. Don't need the extra array object.

  this._events[type] = listener;

  else if (util.isObject(this._events[type]))

  // If we've already got an array, just append.

  this._events[type].push(listener);

  else

  // Adding the second element, need to change to array.

  this._events[type] = [this._events[type], listener];

  // Check for listener leak

  if (util.isObject(this._events[type]) && !this._events[type].warned) {

  var m;

  if (!util.isUndefined(this._maxListeners)) {

  m = this._maxListeners;

  } else {

  m = EventEmitter.defaultMaxListeners;

  }

  if (m && m > 0 && this._events[type].length > m) {

  this._events[type].warned = true;

  console.error('(node) warning: possible EventEmitter memory ' +

  'leak detected. %d listeners added. ' +

  'Use emitter.setMaxListeners() to increase limit.',

  this._events[type].length);

  console.trace();

  }

  }

  return this;

  };