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 相关文章推荐
获取DOM对象的几种扩展及简写
Oct 09 Javascript
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
动态添加删除表格行的js实现代码
Feb 28 Javascript
使用js复制链接中的部分文字的方法
Jul 30 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
Jan 05 Javascript
解决vue页面刷新或者后退参数丢失的问题
Mar 13 Javascript
浅谈手写node可读流之流动模式
Jun 01 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
JS实现小星星特效
Dec 24 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
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
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
深入php内核之php in array
2015/11/10 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python Queue模块详解
2014/11/30 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
法学研究生自我鉴定范文
2013/12/04 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
房地产项目策划书
2014/02/05 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
培训后的感想
2015/08/07 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
深入浅析Django MTV模式
2021/09/04 Python
MySQL创建定时任务
2022/01/22 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL