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

  方法说明:

  移除所有监听器,如果指定event,则将移除指定事件的所有监听器。

  语法:

  

复制代码 代码如下:

  emitter.removeAllListeners([event])

  接收参数:

  event         事件类型,支持多个

  例子:

  

复制代码 代码如下:

  //移除所有监听器

  emitter.removeAllListeners()

  //移除指定event的所有监听器

  emitter.removeAllListeners('data')

  源码:

  

复制代码 代码如下:

  EventEmitter.prototype.removeAllListeners = function(type) {

  var key, listeners;

  if (!this._events)

  return this;

  // not listening for removeListener, no need to emit

  if (!this._events.removeListener) {

  if (arguments.length === 0)

  this._events = {};

  else if (this._events[type])

  delete this._events[type];

  return this;

  }

  // emit removeListener for all listeners on all events

  if (arguments.length === 0) {

  for (key in this._events) {

  if (key === 'removeListener') continue;

  this.removeAllListeners(key);

  }

  this.removeAllListeners('removeListener');

  this._events = {};

  return this;

  }

  listeners = this._events[type];

  if (util.isFunction(listeners)) {

  this.removeListener(type, listeners);

  } else {

  // LIFO order

  while (listeners.length)

  this.removeListener(type, listeners[listeners.length - 1]);

  }

  delete this._events[type];

  return this;

  };