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 相关文章推荐
jquery 常用操作方法
Jan 28 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
javascript删除option选项的多种方法总结
Nov 22 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
微信小程序websocket实现即时聊天功能
May 21 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
Jul 27 Javascript
微信小程序wx.request的简单封装
Nov 13 Javascript
vscode+gulp轻松开发小程序的完整步骤
Oct 18 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 fckeditor 调用的函数
2009/06/21 PHP
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
Yii核心验证器api详解
2016/11/23 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python中异常捕获方法详解
2017/03/03 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
关于Python-faker的函数效果一览
2019/11/28 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
医学生求职自荐信
2013/10/25 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
小学校园活动策划
2014/01/30 职场文书
安全保证书
2015/01/16 职场文书
人才市场接收函
2015/01/30 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript