Home > Web Front-end > JS Tutorial > 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
Release: 2016-05-16 16:27:53
Original
2639 people have browsed it

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;
};
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template