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 相关文章推荐
Javascript模块模式分析
May 16 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
Aug 09 Javascript
详解JS函数重载
Dec 04 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 Javascript
功能强大的Bootstrap效果展示(二)
Aug 03 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
Nov 10 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 Javascript
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
php 获取select下拉列表框的值
2010/05/08 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
iview table高度动态设置方法
2018/03/14 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
numpy 计算两个数组重复程度的方法
2018/11/07 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
以下的初始化有什么区别
2013/12/16 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
春风行动实施方案
2014/03/28 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
JavaScript前端面试组合函数
2022/06/21 Javascript