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中如何传递参数如click(),change()等具体实现
Apr 28 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
javascript执行环境及作用域详解
May 05 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 Javascript
js实现鼠标点击飘爱心效果
Aug 19 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 Javascript
比较node.js和Deno
Apr 27 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数组操作――获取数组最后一个值的方法
2015/04/14 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
浅析javascript的return语句
2015/12/15 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python选择排序算法的实现代码
2013/11/21 Python
python合并文本文件示例
2014/02/07 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python 实现兔子生兔子示例
2019/11/21 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
前台文员个人求职信范文
2014/01/05 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
宿舍标语大全
2014/06/19 职场文书
HR求职自荐信范文
2014/06/21 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
一年级小学生评语大全
2014/12/25 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL