Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 脚本样式 / JavaScript / node.js中的events.emitter.removeListener方法使用说明

方法说明:
移除指定事件的某个监听器。
语法:
复制代码 代码如下:
emitter.removeListener(event, listener)

接收参数:
event            (string)             事件类型
listener         (function)        已注册过的监听器
例子:
复制代码 代码如下:
var callback = function(stream) {
  console.log("someone connected!");
};
server.on("connection", callback);
// ...
server.removeListener("connection", callback);

源码:
复制代码 代码如下:
// emits a "removeListener" event iff the listener was removed
EventEmitter.prototype.removeListener = function(type, listener) {
  var list, position, length, i;
  if (!util.isFunction(listener))
    throw TypeError("listener must be a function");
  if (!this._events || !this._events[type])
    return this;
  list = this._events[type];
  length = list.length;
  position = -1;
  if (list === listener ||
      (util.isFunction(list.listener) && list.listener === listener)) {
    delete this._events[type];
    if (this._events.removeListener)
      this.emit("removeListener", type, listener);
  } else if (util.isObject(list)) {
    for (i = length; i-- > 0;) {
      if (list[i] === listener ||
          (list[i].listener && list[i].listener === listener)) {
        position = i;
        break;
      }
    }
    if (position < 0)
      return this;
    if (list.length === 1) {
      list.length = 0;
      delete this._events[type];
    } else {
      list.splice(position, 1);
    }
    if (this._events.removeListener)
      this.emit("removeListener", type, listener);
  }
  return this;
};