订阅者模式

来源:互联网 发布:mysql 最近10条记录 编辑:程序博客网 时间:2024/05/25 19:56
/* * 初始化 * var namespace.topic = CrmCommon.topic.init("namespace") * 订阅话题 * namespace.topic.subscribe( callback,  topics[]) * 发布话题 * namespace.topic.publish( topic ) */var CrmCommon = {};CrmCommon.topic = {    init: function (namespace) {        var container = this.container;        if (container[namespace] == undefined) {            container[namespace] = {                //订阅者列表,分主题存                subscribers: {},                //订阅函数                subscribe: function (callback, topics) {                    var tmp = this;                    $(topics).each(function (i, topic) {                        if (tmp.subscribers[topic] == undefined) {                            tmp.subscribers[topic] = [];                        }                        for (var i = tmp.subscribers[topic].length - 1; i >= 0; i--) {                            if (tmp.subscribers[topic][i] == callback) {                                return;                            }                        }                        tmp.subscribers[topic][tmp.subscribers[topic].length] = callback;                    })                },                //发布主题                publish: function (topic) {                    var tmp = this;                        if (tmp.subscribers[topic] != undefined) {                            for (var i = 0; i < tmp.subscribers[topic].length; i++) {                                if (typeof tmp.subscribers[topic][i] === 'function') {                                    try {                                        tmp.subscribers[topic][i](topic);                                    } catch (e) {                                }                            }                        }                    }                }            }        }        return container[namespace];    },    container: {}}
原创粉丝点击