JSFiddle - React, Tailwind, and code Playground

HTML

<!--Пример паттерна Mediator/Dispatcher-->
<a href="http://blog.makushev.com/2015/08/04/mediator-dispatcher-oop-pattern/" target="_blank">Описание паттерна Mediator/Dispatcher</a>

JavaScript

//Опишем наш медиатор. Он будет диспетчером рассылки новостей.
var Dispatcher = {
    //хранилище всех подписчиков
    subscribers: {},
    
    //метод для подписки на какое-либо событие
    on: function (event, handler) {
        if (this.subscribers.hasOwnProperty(event)) {
            this.subscribers.push(handler);
        } else {
            this.subscribers[event] = [handler];
        }
    },

    //метод для вызова обработчиков на некое событие
    trigger: function (event, data) {
        for (var ev in this.subscribers) {
            if (ev !== event) {
                continue;
            }
            if (this.subscribers.hasOwnProperty(ev)) {
                this.subscribers[ev].forEach(function (handler) {
                    handler(data);
                });
            }
        }
    }
};

//Наш журнал, с некоторыми новостями
var Magazine = {
    news: [],
    
    //Метод в журнале, который просто добавляет новую новость
    addNews: function(category, title){
        this.news.push({
            category: category,
            title: title
        });
    },
    
    //Режим "лайв". Каждые 3 секунды выпускаем новость в свет
    live: function () {
        var newsItem;

        
        setInterval(function () {
            if (this.news.length === 0) {
                //если новости закончились - кричим об этом
                Dispatcher.trigger('No news');
                return;
            }
            newsItem = this.news.splice(0, 1)[0];
            //отдаем диспетчеру очередную новость
            Dispatcher.trigger(newsItem.category, newsItem.title);
        }.bind(this), 3000);
    }
};

//Саша, который всем обо всем рассказывает
var Sasha = {
    tellToEveryone: function (anything) {
        console.log('I am Sasha. Did you heard that ' + anything + ' ?');
    }
};

//Маша, которая обо всем пишет в блог
var Masha = {
    writeToBlog: function (anything) {
        console.log("Hi, it's Masha. Just known that " + anything + '!!!...