nodeJS中的事件--event

nodeJS中大部分模块,都继承自Event模块。Event模块是一个简单的事件监听器模式的实现,具有addListener/on,once,removeListenter、removeAllListener、emit等基本的事件监听模式方法的实现。它与前端DOM树上的事件并不相同,因为它不存在冒泡,逐层捕获等属于DOM的事件行为,也没有preventDefault()、stopPropagation()等处理事件传递的方法。
我们看一看事件模块的用法

var EventEmitter = require('events').EventEmitter;
// 创建EventEmitter的一个实例
var life = new EventEmitter();
//添加事件监听(on 或addListener)
//一个事件最多能绑定十个监听器 当超过十个监听器 会有警告
//可以对最多的监听器进行设置
life.setMaxListenters = 11;//将最大监听数提高到了11个
//添加ask事件

life.on('ask',function(who){
    console.log(who + '.....1');
})
life.on('ask',function(who){
    console.log(who + ".....2")
})
function test(who){
    console.log(who + '.....3');
}
life.on('ask',test);

life.on('ans',function(){
    console.log('ans.....1');
})
// 移除事件 移除事件时 只能移除事件的回调函数为具名函数的事件 
life.removeListener('ask',test);

//life.removeAllListeners();//删除了全部事件 包括ask和ans

life.removeAllListeners('ask');//删除了ask事件 
// 触发事件
life.emit('ask','charlene');//执行该函数 存在返回值 返回值为布尔值 表示是否被监听

life.emit('ans');
// 方法listeners可以检测当前监听的数量
console.log(life.listeners('ask').length);
//EventEmitter.listenerCount也可以检测当前监听的数量 
console.log(EventEmitter.listenerCount(life,'ask'));

事件的继承

实现一个继承了EventEmitter类是十分简单的,以下是NodeJS中继承EventEmitter的实现方法

function Live(){
    events.EventEmitter.call(this);
}

util.inherits(Live,events.EventEmitter);
var live = new Live();
live.on('say',function(){
    console.log('ccccc');
})
live.emit('say');

Live类继承了events.EventEmitter,所以Live类就存在事件处理函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值