javascript 活动PubSub

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 活动PubSub相关的知识,希望对你有一定的参考价值。

var events = {
    events: {},
    
    /**
     * Subscribe to an event
     * @param {string} eventName 
     * @param {*} fn 
     */
    on: function(eventName, fn) {
        this.events[eventName] = this.events[eventName] || [];
        this.events[eventName].push(fn);
    },

    /**
     * Unsubscribe from an event
     * @param {string} eventName 
     * @param {*} fn 
     */
    off: function(eventName, fn) {
        if (this.events[eventName]) {
            for (var i = 0; i < this.events[eventName].length; i++) {
                if (this.events[eventName][i] === fn) {
                    this.events[eventName].splice(i, 1);
                    break;
                }
            };
        }
    },

    /**
     * Publish an event
     * @param {string} eventName 
     * @param {*} data 
     */
    emit: function(eventName, data) {
        if (this.events[eventName]) {
            this.events[eventName].forEach(function(fn) {
                fn(data);
            });
        }
    }
};

以上是关于javascript 活动PubSub的主要内容,如果未能解决你的问题,请参考以下文章

javascript PubSub / EventBus / Mediator JavaScript模式

JavaScript 中 PubSub / 过多事件和事件处理程序的性能成本?

javascript pubsub - 缓存obj

JavaScript 优雅的Pubsub与jQuery

javascript发布订阅pubsub模式

javascript AW pubsub(工作belove及以上子或酒吧)