发布订阅模式

 //定义一个女主播
        let femaleAnchor = {
            //事件缓存列表(打游戏,唱歌)
            eventList: {},
            //关注主播
            attention: function(event, fn) {
                (this.eventList[event] || (this.eventList[event] = [])).push(fn);
                return this;
            },

            //取消关注
            unattention: function(event, fn) {
                // 获取该平台下面的所有关注者
                let fns = this.eventList[event];
                // 如果该平台下面没得关注者那么直接返回
                if (!fns) {
                    return false;
                }
                // 如果没有穿具体的关注者那么直接清除全部的关注者
                if (!fn) {
                    fns.splice(0, fns.length)
                } else {
                    fns.forEach(function(item, index) {
                        if (item === fn) {
                            //清除传递过来的关注者
                            fns.splice(index, 1);
                        }
                    })
                }
                return this;
            },

            //发布信息(开始直播)
            emitAction: function() {
                let event = Array.prototype.shift.call(arguments);
                let content = arguments[0];
                fns = this.eventList[event] || [];
                let _that = this;
                if (fns.length == 0) {
                    return false;
                }
                fns.forEach(function(fn) {
                    fn.call(_that, content)
                })
                return this;
            }

        }
        let C = function(content) {
            console.log("C男孩" + content)
        }
        let A = function(content) {
            console.log("A男孩" + content)
        }

        //订阅者一(C男孩)
        femaleAnchor.attention("douyu", C)
        //订阅者二(A男孩)
        femaleAnchor.attention("huya", A)
        //取消订阅者(A男孩)
        femaleAnchor.unattention("huya", A)

        //发布
        femaleAnchor.emitAction("douyu", "来斗鱼看直播了哦");
        femaleAnchor.emitAction("huya", "来虎牙看直播了哦");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容