Home  >  Article  >  Web Front-end  >  Instructions for using the emitter.emit method in node.js_node.js

Instructions for using the emitter.emit method in node.js_node.js

WBOY
WBOYOriginal
2016-05-16 16:27:532621browse

Method description:

Emit an event event and pass several optional parameters to the parameter list of the event listener.

Grammar:

Copy code The code is as follows:

emitter.emit(event, [arg1], [arg2], [...])

Receive parameters:

event Event type

arg1 ~ argN Passed parameters (multiple)

Example:

Copy code The code is as follows:

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);

Source code:

Copy code The code is as follows:

EventEmitter.prototype.emit = function(type) {
  var er, handler, len, args, i, listeners;
  if (!this._events)
    this._events = {};
  // If there is no 'error' event listener then throw.
  if (type === 'error') {
    if (!this._events.error ||
        (util.isObject(this._events.error) && !this._events.error.length)) {
      er = arguments[1];
      if (this.domain) {
        if (!er) er = new TypeError('Uncaught, unspecified "error" event.');
        er.domainEmitter = this;
        er.domain = this.domain;
        er.domainThrown = false;
        this.domain.emit('error', er);
      } else if (er instanceof Error) {
        throw er; // Unhandled 'error' event
      } else {
        throw TypeError('Uncaught, unspecified "error" event.');
      }
      return false;
    }
  }
  handler = this._events[type];
  if (util.isUndefined(handler))
    return false;
  if (this.domain && this !== process)
    this.domain.enter();
  if (util.isFunction(handler)) {
    switch (arguments.length) {
      // fast cases
      case 1:
        handler.call(this);
        break;
      case 2:
        handler.call(this, arguments[1]);
        break;
      case 3:
        handler.call(this, arguments[1], arguments[2]);
        break;
      // slower
      default:
        len = arguments.length;
        args = new Array(len - 1);
        for (i = 1; i < len; i )
          args[i - 1] = arguments[i];
        handler.apply(this, args);
    }
  } else if (util.isObject(handler)) {
    len = arguments.length;
    args = new Array(len - 1);
    for (i = 1; i < len; i )
      args[i - 1] = arguments[i];
    listeners = handler.slice();
    len = listeners.length;
    for (i = 0; i < len; i )
      listeners[i].apply(this, args);
  }
  if (this.domain && this !== process)
    this.domain.exit();
  return true;
};
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn