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操作对象数组的实现代码
Apr 27 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 Javascript
基于vue实现微博三方登录流程解析
Nov 04 Javascript
vue中activated的用法
Jan 03 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实现小型站点广告管理
2006/10/09 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
PHP中串行化用法示例
2016/11/16 PHP
js 日期比较相关天数代码
2014/04/02 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
js获取url传值的方法
2015/12/18 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python批量处理文件或文件夹
2020/07/28 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
本科毕业生求职自荐信
2014/04/09 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
副处级干部考察材料
2014/05/17 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
四十年同学聚会致辞
2015/07/28 职场文书