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 相关文章推荐
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
event.srcElement 用法笔记e.target
Dec 18 Javascript
浅谈Javascript嵌套函数及闭包
Nov 09 Javascript
鼠标拖动实现DIV排序示例代码
Oct 14 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
AngularJS入门教程引导程序
Aug 18 Javascript
浅谈javascript错误处理
Aug 11 Javascript
vue跳转页面的几种方法(推荐)
Mar 26 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 Javascript
如何利用vue实现波谱拟合详解
Nov 05 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 parse_url 一个好用的函数
2009/10/03 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php的sso单点登录实现方法
2015/01/08 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
python实现猜拳游戏
2020/03/04 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
Python新手学习装饰器
2020/06/04 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
物理系毕业生自荐信
2013/11/01 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python