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来定义类的规范小结
Nov 19 Javascript
javascript判断非数字的简单例子
Jul 18 Javascript
jQuery制作效果超棒的手风琴折叠菜单
Apr 03 Javascript
jquery图片滚动放大代码分享(1)
Aug 25 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
Javascript小技能总结(推荐)
Jun 02 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
Apr 03 Javascript
vue使用element-ui按需引入
May 20 Vue.js
关于对TypeScript泛型参数的默认值理解
Jul 15 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
PHP安全配置
2006/12/06 PHP
PHP产生随机字符串函数
2006/12/06 PHP
php中curl使用指南
2015/02/05 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
围观tangram js库
2010/12/28 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
基于python实现百度翻译功能
2019/05/09 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
文员自我评价怎么写
2013/09/19 职场文书
大学生毕业求职信
2014/06/12 职场文书
寒假安全保证书
2015/02/28 职场文书
2015年工程师工作总结
2015/04/30 职场文书
python保存图片的四个常用方法
2022/02/28 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
MySQL数据库事务的四大特性
2022/04/20 MySQL
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技