欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年12月10日 09:46:31   投稿:junjie  
這篇文章主要介紹了node.js中的emitter.emit方法使用說明,本文介紹了emitter.emit的方法說明、語法、接收參數、使用實例和實現源碼,需要的朋友可以參考下

方法說明:

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

語法:

復制代碼 代碼如下:

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

接收參數:

event                      事件類型

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

例子:

復制代碼 代碼如下:

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

源碼:

復制代碼 代碼如下:

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

相關文章

  • CentOS 安裝NodeJS V8.0.0的方法

    CentOS 安裝NodeJS V8.0.0的方法

    這篇文章主要介紹了CentOS 安裝NodeJS V8.0.0的方法,需要的朋友可以參考下
    2017-06-06
  • 詳解如何使用Node.js編寫命令工具——以vue-cli為例

    詳解如何使用Node.js編寫命令工具——以vue-cli為例

    本篇文章主要介紹了如何使用Node.js編寫命令工具——以vue-cli為例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • nodejs+websocket實時聊天系統改進版

    nodejs+websocket實時聊天系統改進版

    這篇文章主要介紹了nodejs+websocket實時聊天系統的改進版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 基于nodejs res.end和res.send的區(qū)別

    基于nodejs res.end和res.send的區(qū)別

    今天小編就為大家分享一篇基于nodejs res.end和res.send的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node的EventEmitter模塊基本用法簡單實現示例

    node的EventEmitter模塊基本用法簡單實現示例

    這篇文章主要為大家介紹了node的EventEmitter模塊基本用法簡單實現示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Nodejs實現文件上傳的示例代碼

    Nodejs實現文件上傳的示例代碼

    這篇文章主要介紹了Nodejs文件上傳的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • nodejs對express中next函數的一些理解

    nodejs對express中next函數的一些理解

    這篇文章主要介紹了nodejs對express中next函數的一些理解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • node+axios實現服務端文件上傳示例

    node+axios實現服務端文件上傳示例

    這篇文章主要介紹了node+axios實現服務端文件上傳示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • node.js 發(fā)布訂閱模式的實例

    node.js 發(fā)布訂閱模式的實例

    下面小編就為大家?guī)硪黄猲ode.js 發(fā)布訂閱模式的實例。小編覺得挺不錯的,現在就想給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Node使用koa2實現一個簡單JWT鑒權的方法

    Node使用koa2實現一個簡單JWT鑒權的方法

    這篇文章主要介紹了Node使用koa2實現一個簡單JWT鑒權的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論