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 相关文章推荐
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
JS只能输入正整数的简单实例
Oct 07 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
JS快速实现简单计算器
Apr 08 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 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
php查看当前Session的ID实例
2015/03/16 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
实例讲解PHP表单
2020/06/10 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
求职自荐信
2013/12/14 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书