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 相关文章推荐
JS getStyle获取最终样式函数代码
Apr 01 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
Jan 17 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
vue router路由嵌套不显示问题的解决方法
Jun 17 Javascript
vue组件与复用详解
Apr 08 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
apache php模块整合操作指南
2012/11/16 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python中常用的九种预处理方法分享
2016/09/11 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python简单操作excle的方法
2018/09/12 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
班风口号
2014/06/18 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
工程催款通知书
2015/04/17 职场文书
党课主持词大全
2015/06/30 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
导游词之山海关
2019/12/10 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle