nodejs 事件模块 events 只有一个对象 EventEmitter 。

var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();                           //生成 EventEmitter 对象的实例 life 。

//on 也可以用 addEventListener
life.on('EventName',function(name){                 //对 EventEmitter 对象的实例 life 增加一个事件监听,第一个参数是 事件的名字, 第二个参数是 事件被触发时 ,执行的函数。
  console.log("I am ", name);
})

life.emit('EventName','Kobe');                          //触发 EventName 事件,第一个参数是事件名,第二个参数是 事件监听函数 需要的参数 。  输出 I am Kobe

life.emit('EventName','kobe','bryant');              //输出  I am Kobe

life.on('EventName',function(name){                //可以对同一个事件名 EventName 注册多个监听函数,当EventName 被触发时,依此执行监听函数。(当 on 注册的函数写在 emit 后时,该函数不被执行 )
  console.log("My name is  ", name);
})

官方建议对一个事件不要设置超过10个监听器。这个值可以修改: life.setMaxListeners(11);  对单个事件设置最大额度。

如果对life 注册另外一个名字的事件,不会占用最大值。

life.on('EventName2',function(name){                //对life注册另一个事件 EventName2
  console.log("My name is  ", name);
})

var hasConfortListener = life.emit('EventName2','Kobe')   //emit 函数会返回一个bool值,如果该事件被监听,则返回true, 否则返回false 。

删除事件监听函数:removeListener()

不可使用匿名函数删除事件监听,没有效果 。需要通过实名函数删除:

var water = function(name){
  console.log("I am ", name);
}

life.on('EventName',water);

life.removeListener('EventName',water);     //删除 EventName 事件的 water 这个监听函数 。

life.listeners('EventName').length   返回 EventName 事件的监听函数个数。  也可以写成:  EventEmitter.listenerCount(life,'EventName')  两个参数:事件实例名, 事件名。

life.removeAllListeners()                     删除所有事件的所有监听函数。

life.removeAllListeners('EventName')   删除'EventName' 事件的所有监听函数。

nodejs事件模块的更多相关文章

  1. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  2. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  3. nodejs -- event 模块, 事件模块.

    1. 注册事件 on 或者 addListener,触发事件 emit 1-1简单的使用: var EventEmitter = require('events').EventEmitter; var ...

  4. Nodejs核心模块

    (1)全局对象 在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性. 在nodejs中能够直接访问到的对象通常都是global ...

  5. nodejs cluster模块初探

    大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...

  6. EventEmitter:nodeJs事件触发机制

    Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.r ...

  7. nodejs事件的监听与事件的触发

    nodejs事件(Events) 一.事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html  ...

  8. nodejs 事件机制

    node 事件机制   一 三种定时器 NodeJS中有三种类型的定时器:超时时间.时间间隔.即时定时器 1.超时时间:setTimeout(callback,delayMilliSeconds,[a ...

  9. Backbone事件模块及其用法

    事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说 ...

随机推荐

  1. ubuntu升级内核后vmware-player启动失败

    在虚拟机软件中,vmware player是对硬件支持很好的,通过它可以很方便的使用网银.单片机开发等等工作.但是最近ubuntu每次升级内核后,vmware都会启动失败,提示:Before you ...

  2. Spark使用实例

    1.介绍 Spark是基于Hadoop的大数据处理框架,相比较MapReduce,Spark对数据的处理是在本地内存中进行,中间数据不需要落地,因此速度有很大的提升.而MapReduce在map阶段和 ...

  3. [Hadoop大数据]——Hive数据的导入导出

    Hive作为大数据环境下的数据仓库工具,支持基于hadoop以sql的方式执行mapreduce的任务,非常适合对大量的数据进行全量的查询分析. 本文主要讲述下hive载cli中如何导入导出数据: 导 ...

  4. CentOS On VirtualBox

    背景 后台开发需要随时与服务器交互,本人使用Mac开发.但是不愿意在Mac上直接安装redis以及mysql等等工具.所以选择在VirtualenvBox下安装一个服务器系统,并且使用ssh与其连接. ...

  5. JS原生基础终结篇 (帅哥)

    闭包 基础    面向对象基础 1.1 闭包 在程序语言中,所谓闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落.这些外部执行域的非 ...

  6. VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)

    上一节我们介绍了 VXLAN 的封装格式以及 VTEP.今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持. VXLAN 包转发流程 VXLAN 在 ...

  7. 解决在配置Oracle数据库连接错误问题

    项目开发使用的Oracle,但是使用了不同的版本的Oracle数据库.然后自己在电脑上安装了2个连接客户端,版本分别是: 10.2.0 12.1.0 用Toad for Oracle 9.0的时候,我 ...

  8. BFC之浅析篇

    BFC是什么呢? 掏粪男孩? 当然不是咯.BFC,英文名Block formatting context,直译为“块级格式化上下文”.它是W3C CSS 2.1规范中的一个概念,决定了元素如何对内容进 ...

  9. Notes:DOM的事件模拟

    首先使用document对象的createEvent方法创建一个事件对象,然后初始化该事件对象,接着使用支持事件DOM节点的dispatchEvent方法触发事件. DOM2级事件和DOM3级事件有些 ...

  10. JDBC常用API小结

    建立数据库链接的三种方式: package com.victor_01; import java.sql.Connection; import java.sql.Driver; import java ...