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'} );