JSFiddle - React, Tailwind, and code Playground

by dima_k

JavaScript

var mediator = (function () {
    var channels = {},
        subscribe = function (channel, callback) {
            if (!channels[channel]) {
                channels[channel] = [];
            }
            channels[channel].push({ callback: callback })
        },
        publish = function (channel, data) {
            if (!channels[channel])
                return false;
            for (var i = 0; i < channels[channel].length; i++) {
                channels[channel][i].callback(data)
            }
        };
    return {
        subscribe: subscribe,
        publish: publish
    }
})();

var person = {name: 'Dima'};
mediator.subscribe('changeName', function(newName){
    person.name = newName;
});

console.log('Name before changing : ' + person.name);

setTimeout(function(){
    mediator.publish('changeName', 'Eyal');
    console.log('Name after changing : ' + person.name);
}, 2000);