国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

node.js中的emitter.emit方法使用說明

2024-05-06 16:11:49
字體:
供稿:網(wǎng)友
這篇文章主要介紹了node.js中的emitter.emit方法使用說明,本文介紹了emitter.emit的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
 
 

方法說明:

發(fā)射event事件,傳遞若干可選參數(shù)到事件監(jiān)聽器的參數(shù)表。

語法:

 

復(fù)制代碼代碼如下:

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

 

接收參數(shù):

event                      事件類型

arg1 ~ argN           傳遞的參數(shù)(多個)

例子:

 

復(fù)制代碼代碼如下:

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

 

源碼:

 

復(fù)制代碼代碼如下:

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 旌德县| 丰城市| 富阳市| 本溪市| 诸城市| 建水县| 禄丰县| 荥阳市| 泰顺县| 祥云县| 武冈市| 安阳县| 寿宁县| 武义县| 武义县| 沛县| 通河县| 郑州市| 永泰县| 洛浦县| 崇信县| 宜兰县| 桂林市| 灌云县| 观塘区| 舒城县| 沙河市| 咸宁市| 南投县| 廊坊市| 汝城县| 西乌珠穆沁旗| 遂宁市| 榆林市| 鸡泽县| 红河县| 鹤峰县| 宜兰市| 舟山市| 泸定县| 浦东新区|