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 ajax serialize()方法的使用以及常见问题解决
Jan 27 Javascript
由浅入深剖析Angular表单验证
Jul 14 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
JavaScript基础之AJAX简单的小demo
Jan 29 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
开发一个封装iframe的vue组件
Mar 29 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 strnatcmp()函数的用法总结
2013/11/27 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
详解Python中的路径问题
2020/09/02 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Python实现一个论文下载器的过程
2021/01/18 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
会计毕业生自我鉴定
2013/11/04 职场文书
会议接待欢迎词
2014/01/12 职场文书
创先争优制度
2014/01/21 职场文书
家教广告词
2014/03/19 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android
Hive常用日期格式转换语法
2022/06/25 数据库