node.js里的event模块

在Node.js中,很多对象都会发出事件。比如,fs.readStream打开文件时会发出一个事件。所有发出事件的对象都是events.EventEmitter的实例,可以通过require("events");获得event模块。
通常,事件名采用“驼峰式”命名方式,但是,并没有严格规定。这只是推荐的命名方法。
函数可以添加给对象,对象发出事件时,对应函数就会被执行。这些函数被称作监听器(listeners)。在监听器函数中,this引用的是它(指此监听器函数)添加到的EventEmitter对象。

添加监听器

为事件绑定事件处理程序,可以使用addListener(event, listener)和on(event, listener),它们的作用是完全一样的。传入的参数是事件(event)和处理函数(listener)。

//事件触发模块
var events=require("events");
var util = require("util");
//定义对象
function Dad() {

}
//实现原型的继承
util.inherits(Dad,events);
var newDad = new Dad();
function test() {
    console.log("我是test方法");
}
function myfn() {
    console.log("我是myfn方法");
}

addListener 方法

newDad.addListener("lee",test);
newDad.addListener("lee",myfn);

on 方法

newDad.on("lee",test);// ------on:jq方法,可监控
newDad.on("lee",myfn);

设置监听器最大绑定数
emitter.setMaxListeners(n)可以设置同一事件的监听器最大绑定数,默认情况下,超过10个就会警告提示,这能帮我们快速找到类存泄露的地方。显然,不是所有的事件触发器都限制在10个监听器,通过这个方法可以设置,如果设置为0就是无限制。

newDad.setMaxListeners(2); //-------只能绑定两个

once(event, listener)绑定的事件监听器只会执行一次,然后就会被删除掉。

newDad.once("onceEmit",test);

解除单个事件绑定

//removeAllListeners("事件名称",事件) 移除指定事件名称的对应事件
//removeAllListeners("事件名称") 移除指定事件名称的所有事件
//removeAllListeners() 移除所有绑定事件
 newDad.removeListener("lee",test) 

触发事件 emit

newDad.emit("lee");
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Node.js EventEmitter Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队...
    FTOLsXD阅读 326评论 1 2
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,403评论 0 6
  • 毫无疑问,nodeJS改变了整个前端开发生态。本文通过分析nodeJS当中events模块源码,由浅入深,动手实现...
    LucasHC阅读 1,875评论 3 17
  • Node.js EventEmitter Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队...
    yyshang阅读 269评论 0 1
  • 我是一个怕麻烦的人,也怕打扰别人。所以会给人以距离感。不知道这是怎样造成的,但此刻我想要作不一样的自己。 打开自己...
    Mooooore阅读 158评论 0 0