node.js中的emitter.on方法使用说明


Posted in Javascript onDecember 10, 2014

方法说明:

为指定事件注册一个监听器。

语法:

emitter.on(event, listener)

emitter.addListener(event, listener)

接收参数:

event            (string)             事件类型
listener         (function)         触发事件时的回调函数

例子:

server.on('connection', function (stream) {

  console.log('someone connected!');

});

源码:

EventEmitter.prototype.addListener = function(type, listener) {

  var m;

  if (!util.isFunction(listener))

    throw TypeError('listener must be a function');

  if (!this._events)

    this._events = {};

  // To avoid recursion in the case that type === "newListener"! Before

  // adding it to the listeners, first emit "newListener".

  if (this._events.newListener)

    this.emit('newListener', type,

              util.isFunction(listener.listener) ?

              listener.listener : listener);

  if (!this._events[type])

    // Optimize the case of one listener. Don't need the extra array object.

    this._events[type] = listener;

  else if (util.isObject(this._events[type]))

    // If we've already got an array, just append.

    this._events[type].push(listener);

  else

    // Adding the second element, need to change to array.

    this._events[type] = [this._events[type], listener];

  // Check for listener leak

  if (util.isObject(this._events[type]) && !this._events[type].warned) {

    var m;

    if (!util.isUndefined(this._maxListeners)) {

      m = this._maxListeners;

    } else {

      m = EventEmitter.defaultMaxListeners;

    }

    if (m && m > 0 && this._events[type].length > m) {

      this._events[type].warned = true;

      console.error('(node) warning: possible EventEmitter memory ' +

                    'leak detected. %d listeners added. ' +

                    'Use emitter.setMaxListeners() to increase limit.',

                    this._events[type].length);

      console.trace();

    }

  }

  return this;

};
Javascript 相关文章推荐
JQuery AJAX提交中文乱码的解决方案
Jul 02 Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
node.js中的events.emitter.once方法使用说明
Dec 10 #Javascript
node.js中的emitter.emit方法使用说明
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
You might like
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
C#笔试题
2015/07/14 面试题
消防应急演练方案
2014/02/12 职场文书
投资入股合作协议书
2014/10/28 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python