nodeJs事件之监听移除事件

var EventEmitter=require(‘events‘).EventEmitter
var life=new EventEmitter();
//comfort  求安慰,函数名;
//fondness 求溺爱,函数名;
//官方建议,事件监听的最大数量不要超过10个,太多的话可能会导致内存的泄漏,当然这个值是可以修改的,通过setMaxListeners()方法修改;
life.setMaxListeners(3)
life.on(‘comfort‘,function(who){//监听,求安慰,
    console.log(‘给‘+who+‘倒水!‘);
})
life.on(‘comfort‘,function(who){//监听,求安慰,
    console.log(‘给‘+who+‘揉肩‘);
})
life.on(‘comfort‘,zuofan);
function zuofan(who){
    console.log(‘给‘+who+‘做饭‘);
}
life.on(‘fondness‘,maiyifu);
life.on(‘fondness‘,jiaogongzi);
function maiyifu(who){
    console.log(‘给‘+who+‘买衣服‘);
}
function jiaogongzi(who){
    console.log(‘给‘+who+‘交工资‘);
}
//life.removeListener(‘comfort‘,zuofan); //移除事件;
life.emit(‘comfort‘,‘老公‘)//调用事件
life.emit(‘fondness‘,‘老婆‘)//调用事件
//console.log(life.emit(‘comfort‘,‘老公‘))//是否调用事件,返回true,false;
console.log(‘给老公做的事情:‘+life.listeners(‘comfort‘).length)//事件的个数;
console.log(‘给老婆做的事情:‘+life.listeners(‘fondness‘).length)//事件的个数;

打开CMD,运行node events.js,如下图所示:

首先监听事件,然后用emit()方法来调用,移除事件为removeListener()方法;

需要注意的是,监听事件可以传入匿名函数也可以传入实名函数,但是移除事件的时候,必须传入实名函数,传入匿名函数会有错误;

时间: 2024-08-11 07:44:44

nodeJs事件之监听移除事件的相关文章

node.js的事件发射监听机制

process也是emitter的一个实例.可以在程序中直接使用. // 监听1 process.on("aa", function(data,state) { console.log('监听1'); console.log(data + ':' + state); }); // 事件1 process.emit("aa", '发射', '事件1'); // 监听2 process.on("aa", function(data,state) {

cocos2d-x CCSprite 精灵监听点击事件

参考文章: cocos2d-x 精灵监听点击事件 http://labs.easymobi.cn/?p=5167 实现过程,实现CCTouchDelegate接口,在enter 的时候添加监听,exit 和析构时移除监听,点击时将touch 的坐标转化为相对精灵的坐标,如果是否在精灵的范围内,则响应点击.主要是参考前面两篇文章中的例子,不同的地方在判断区域,个人觉得太复杂.所以稍微修改了下,看起来更容易理解. PianoTile.h class PianoTile : public cocos2

【laravel】Eloquent 模型事件和监听方式

所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creating 插入到数据库前触发 created 插入到数据库后触发 updating 更新到数据库前触发 updated 更新到数据库后触发 saving 保存到数据库前触发(插入/更新之前,无论插入还是更新都会触发) saved 保存到数据库后触发(插入/更新之后,无论插入还是更新都会触发) deleti

深入理解Spring的容器内事件发布监听机制

目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监听 4.Spring事件监听源码解析 4.1 初始化事件发布器流程 4.2 注册事件监听器流程 4.3 容器事件发布流程 5.总结 1. 什么是事件监听机制 在讲解事件监听机制前,我们先回顾下设计模式中的观察者模式,因为事件监听机制可以说是在典型观察者模式基础上的进一步抽象和改进.我们可以在JDK或

Vue中监听窗口关闭事件并在窗口关闭前发送请求

Vue中监听窗口关闭事件并在窗口关闭前发送请求,代码如下: mounted() { window.addEventListener('beforeunload', e => this.beforeunloadHandler(e)) window.addEventListener('unload', e => this.unloadHandler(e)) }, destroyed() { window.removeEventListener('beforeunload', e => thi

IOS之UI--自定义按钮实现代理监听点击事件

前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlEvents:UIControlEventTouchUpInside]; 含参数的监听方法 [button实例对象 addTarget:self action:@selector(func:) forControlEvents:UIControlEventTouchUpInside]; 下面通过代理的

CCLayer 监听点击事件

根据CCLayer 的源代码,若touchEnable为true, 在onEnter(),onExit()分别会注册监听及解除监听,这样一样就不会自己写监听.需要注意的是默认监听多点触摸,即不会调用 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); 另外CCLayer提供了一个setTouchMode(ccTouchesMode mode) 来设定监听点击的类型,typedef enum { kCCTouchesAllAtO

鼠标滚轮事件的监听

鼠标滚轮事件的监听原理:判断鼠标滚轮的滚动获取一个值,根据这个值判断滚动的方向.分析:首先,判断滚轮方向.Firefox:detail,取值为-/+3(负值向上,正值向下):其他:wheelDelta,取值为+/-120(正值向上,负值向下).兼容所有浏览器的的封装: ? 1 2 3 4 5 6 7 8 9 10 function scrollEvent(ev){     ev = ev || window.event;     var data = '';     if(ev.wheelDel

(转)NGUI研究院之三种方式监听NGUI的事件方法

NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活. 1 2 3 4 void OnClick() { Debug.Log("Button is Click!!!"); }   2.使用SendMessage 选择按钮后,在Unity导航菜单栏中选择Component->Interaction->Button Messag