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 XML操作 封装类
Jul 01 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
不同浏览器的怪癖小结
Jul 11 Javascript
jQuery 1.5最新版本的改进细节分析
Jan 19 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
JavaScript生成二维码图片小结
Dec 27 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
Jan 22 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
Jan 02 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 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
WHOIS类的修改版
2006/10/09 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
php实现的二分查找算法示例
2017/06/20 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
jQuery数组处理方法汇总
2011/06/20 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
python PyTorch预训练示例
2018/02/11 Python
Python中psutil的介绍与用法
2019/05/02 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
销售行政专员职责
2014/01/03 职场文书
美术指导助理求职信
2014/04/20 职场文书
信息技术课后反思
2014/04/27 职场文书
碧霞祠导游词
2015/02/09 职场文书
Python常遇到的错误和异常
2021/11/02 Python
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python