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的键盘控制事件说明
Apr 15 Javascript
dwr spring的集成实现代码
Mar 22 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
JavaScript SHA-256加密算法详细代码
Oct 06 Javascript
JS实现JSON.stringify的实例代码讲解
Feb 07 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
微信小程序实现打卡日历功能
Sep 21 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
使用p5.js临摹动态图片
Nov 04 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 curl 并发最佳实践代码分享
2012/09/05 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
django云端留言板实例详解
2019/07/22 Python
python属于解释型语言么
2020/06/15 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
附答案的Java面试题
2012/11/19 面试题
大学生就业自我鉴定
2013/10/26 职场文书
运动会广播稿500字
2014/01/28 职场文书
科学发展观演讲稿
2014/09/11 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
政风行风评议心得体会
2014/10/21 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL