白话讲讲EventEmitter的实现
首先我们要知道什么是EventEmitter?
简单来说就是对事件触发与事件监听器功能的封装。
EventEmitter有什么API是需要我们去实现的
- on 对事件进行监听
- emit进行触发
- once是指只监听一次
- alloff是关掉所有消息队列中的监听
- off关掉相应的监听事件
怎么实现
构造函数
首先定义一个存放消息队列的对象,每个消息队列都有一个名字eventname,这个消息队列可以承载多个事件对象
每个事件对象有两个属性:listener(存放回调函数,也就是你要监听的事件),once(这个参数是为了只进行一次监听而设立的参数)
on监听函数
-
首先先判断有没有这个消息队列,没有的话创建一个新的消息队列,有的话进行for查找
-
判断传进来的参数
once函数
监听事件的once属性是true
emit函数
-
找到监听的事件进行触发
-
这里需要注意的是当你找到你的监听事件,判断一下once属性,true进行撤掉当前监听事件
off函数
- 找到监听事件在对应消息队列的下标,方便进行切割
alloff函数
- 直接判断有没有这个消息队列
- 清空消息队列或者清空对象