JS订阅方法

来源:互联网 发布:php各类接口开发 编辑:程序博客网 时间:2024/04/27 11:11
观察者模式,订阅方法(function (q) {    var topics = {}, // 回调函数存放的数组        subUid = -1;    // 发布方法    q.publish = function (topic, args) {        if (!topics[topic]) {            return false;        }        setTimeout(function () {            var subscribers = topics[topic],                len = subscribers ? subscribers.length : 0;            while (len--) {                subscribers[len].func(topic, args);            }        }, 0);        return true;    };    //订阅方法    q.subscribe = function (topic, func) {        if (!topics[topic]) {            topics[topic] = [];        }        var token = (++subUid).toString();        topics[topic].push({            token: token,            func: func        });        return token;    };    //退订方法    q.unsubscribe = function (token) {        for (var m in topics) {            if (topics[m]) {                for (var i = 0, j = topics[m].length; i < j; i++) {                    if (topics[m][i].token === token) {                        topics[m].splice(i, 1);                        return token;                    }                }            }        }        return false;    };}(DUYA_SUB));

0 0
原创粉丝点击