JS设计模式初识(五)-发布订阅模式

定义

发布订阅模式又称观察者模式


// 发布订阅模式
    const eventSubscribe = (function() {
        const eventSet = {};
        return {
            // 获取订阅列表
            getEventList: () => Object.keys(eventSet),
            // 获得某个key的callbacklist
            getCallbacks: (key) => eventSet[key],
            // 订阅
            subscribe: (key, ...callbacks) => {
                if (!eventSet[key]) {
                    eventSet[key] = [];
                }
                eventSet[key].push(...callbacks);
            },
            // 发布函数
            publish: (key, ...args) => {
                const callbacks = this.getCallbacks(key);
                if(callbacks && callback.length === 0) {
                    return false;
                }
                for (const callback of callbacks) {
                    callback.apply(this, args);
                }
            },
            // 删除订阅
            remove: (key, callback) => {
                const callbacks = this.getCallbacks(key);
                if (callbacks && callbacks.length === 0) {
                    return false; 
                }
                if (!callback) { // 无callback ,取消key的所有回调
                    callbacks && (callbacks.length = 0);
                }
                callbacks = callbacks.filter((item) => item !== callback);
                return true;
            }
    
        };
    })();
复制代码

转载于:https://juejin.im/post/5cfe8339e51d45106172109d

猜你喜欢

转载自blog.csdn.net/weixin_34133829/article/details/91477623