JSFiddle - React, Tailwind, and code Playground

by jamiefearon

JavaScript

var topics = {};

var psub = {
    
    subscribe: function( topic, callback ) {
     
        if ( !topics[topic] )  
            topics[topic] = [];
        
        topics[topic].push({
            callback : callback
        }); 
        
    },
    
    publish: function( topic , data) {
        
            var subscribers = topics[topic];
            var len = subscribers ? subscribers.length : 0;

        while (len--){ 
               subscribers[len].callback(data);
        }
        
    },
    
    unsubscribe: function( topic, callback ) {
        if ( !topics [ topic ] )
            return;
        
       
        var length = topics[ topic ].length;
        for (i = 0; i < length; i++ ) {
             
            if ( topics[ topic ][ i ].callback === callback ) {
                console.log(i);
                topics[ topic ].splice( i, 1 );
                break;
            }
        }  
    }
};


psub.subscribe( "App.Navigation", function() {
    alert( "App.Navigation topic published!" );
});

psub.subscribe( "Meow", function(data) {
    alert( "Meow topic published!" + data.foo);
});


psub.unsubscribe( "App.Navigation", function() {
    alert( "App.Navigation topic published!" );
});

psub.publish( "App.Navigation" );

psub.publish( "Meow", {foo: 'bar'} );