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 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
框架页面高度自动刷新的Javascript脚本
Nov 01 Javascript
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
node.js基础知识小结
Feb 26 Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
实例讲解vue源码架构
Jan 24 Javascript
使用Vant完成通知栏Notify的提示操作
Nov 11 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 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/03/17 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
javascript控制台详解
2015/06/25 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
python 正确保留多位小数的实例
2018/07/16 Python
python实现点对点聊天程序
2018/07/28 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
五年级学生评语
2014/04/22 职场文书
房产公证委托书范本
2014/09/20 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
道歉的话语大全
2015/05/12 职场文书
复活读书笔记
2015/06/29 职场文书
详解Python类和对象内容
2021/06/22 Python