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


Posted in Javascript onDecember 10, 2014

方法说明:

发射event事件,传递若干可选参数到事件监听器的参数表。

语法:

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;

};
Javascript 相关文章推荐
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
多个jQuery版本共存的处理方案
Mar 17 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
Dec 16 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
Mar 04 Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 Javascript
Vue cli+mui 区域滚动的实例代码
Jan 25 Javascript
原生js实现随机点名功能
Nov 05 Javascript
vue input标签通用指令校验的实现
Nov 05 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 Javascript
node.js中的events.emitter.removeListener方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 #Javascript
node.js中的querystring.unescape方法使用说明
Dec 10 #Javascript
node.js中的querystring.escape方法使用说明
Dec 10 #Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 #Javascript
node.js中的querystring.parse方法使用说明
Dec 10 #Javascript
You might like
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python for循环remove同一个list过程解析
2019/08/14 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
python怎么判断素数
2020/07/01 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
仓库管理制度
2014/01/21 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python