发布/订阅模式

Author Avatar
Nico Zhang 2月 27, 2018
  • 在其它设备中阅读本文章

概述

观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象。它是由两类对象组成,主题和观察者,主题负责发布事件,同时观察者通过订阅这些事件来观察该主题,发布者和订阅者是完全解耦的,彼此不知道对方的存在,两者仅仅共享一个自定义事件的名称。

代码


window.eventHub = {
    events: {},                     //事件中心   '事件名':[]
    emit(eventName, data) {      //发布
        for (let key in this.events) {
            if (key === eventName) {
                let fnList = this.events[key]
                fnList.map((fn)=> {
                    fn.call(undefined, data)
                })
            }
        }
    },
    on(eventName, fn) {         //订阅
        if(this.events[eventName]===undefined){
            this.events[eventName]=[]
        }
        this.events[eventName].push(fn)
    },
    off() { }
}