题解 | #发布订阅模式#

发布订阅模式

http://www.nowcoder.com/practice/569e1fd641be4fd797f12a28b763d709

19_发布订阅模式

本题考点:设计模式

根据题目要求,完成"EventEmitter"类实现发布订阅模式,考虑到同一名称事件可能有多个不同的执行函数,所以在构造函数中需要以对象的结构存放事件,核心步骤有:

  1. 构造函数中创建”events“对象变量用于存放所有的事件
  2. 添加”on“函数,用于订阅事件。当总事件中不存在此事件时创建新的事件数组,当存在时将”fn“函数添加在该事件对应数组中
  3. 添加”emit“函数,用于发布事件,遍历该事件下的函数数组并全部执行

参考答案

class EventEmitter {
    constructor() {
        this.events = {}
    }
    on(event, fn) {
        if(!this.events[event]) {
            this.events[event] = [fn]
        } else {
            this.events[event].push(fn)
        }
    }
    emit(event) {
        if(this.events[event]) {
            this.events[event].forEach(callback => callback())
        }
    }
}

全部评论

相关推荐

notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
评论
16
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务