常用事件模块
由于本人也是才开始学习Node,所以这里只简单的讲点Scott老师来视频中讲解的事件,后续在进行总结!
首先导入events模块
var EventEmitter = require('events').EventEmitter;
var life = New EventEmitter();
解释一下:
Node.js核心API的大部分是围绕一个惯用的异步事件驱动架构构建的,其中某些类型的对象(称为“发射器”)周期性地发出命名事件,使得调用Function对象(“侦听器”)。
添加一个事件(addListener)括号中的也可以使用
on(eventName,listener)
- 参数一:事件的名称或者字符串
- 参数二:回调函数
- 官方建议最多添加10事件,可更改最大值:emitter.setMaxListeners(num),多了容易内存泄漏
life.on('EV', function(a) {
console.log(a);//参数,由emit传递
});
创建事件是一个发射器,接受器 emit
emitter.emit(eventName,[...args])
返回值为boolean
- true:有监听器
- false:无
var isTure = life.emit('EV','参数')//返回一个true
//第二个参数会传递到on里的回调函数中去
说到发出事件,接收事件,怎么删除呢? Scott老师在视频中也讲到了一个坑:不能移除一个匿名函数
移除事件的时候只能移除具名函数
移除某个事件:
left.removeListener(eventName,listener)
//Scott老师为了便于大家理解,写的伪代码
function water(who){
console.log('给'+ who + '倒水')!
}
life.on('求安慰',water);
life.removeListener('求安慰',water);//解除成功
移除全部事件:life.removeAllListeners(EventName)
- 不传参数全部删除
- 带参数:删除为参数名的事件
获某个事件的集合:life.listeners(eventName)
可以加length获得总数
EventEmitter.listenerCount(eventName);
4.0已被弃用
官方推荐使用emitter.listenerCount(eventName)
返回事件的数目
网友评论