6.NodeJs事件模块

常用事件模块


由于本人也是才开始学习Node,所以这里只简单的讲点Scott老师来视频中讲解的事件,后续在进行总结!

官网Api

首先导入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)返回事件的数目

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

推荐阅读更多精彩内容