发布订阅

245 阅读1分钟
window.eventHub = {
    events: {},
    emit(eventName, data) {//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) {//fn就是你订阅者要做的事,是一个callback函数,传给发布者让他帮你call
        //订阅
        if (this.events[eventName] === undefined) {
            this.events[eventName] = []
        }
        this.events[eventName].push(fn)
    },
    off() {}
}