JSFiddle - React, Tailwind, and code Playground

by PratapDessai

JavaScript

// {
//     "eventName1": [func1, func2],
//     "eventName2": [func3]
//}
let events = {
    events: {},
    subscribe: function (eventName, func) {
        this.events[eventName] = this.events[eventName] || [];
        this.events[eventName].push(func);
    },
    unsubscribe: function (eventName, func) {
        if (this.events[eventName]) {
            this.events = this.events.filter((name) => name !== func)
        }
    },
    publish:function (eventName, data) {
        if (this.events[eventName]) {
        		console.log(this.events)
            this.events[eventName].forEach((fn) => {
                fn(data);
            })
        }
    }
}

events.events = [1,2,3];

console.log(events.events)
function n1(){
  console.log('inside n1');
}
events.subscribe('name1', n1);

function n2(){
  console.log('inside n2');
}
events.subscribe('name1', n2);
function n2(){
  console.log('inside n2');
}
events.subscribe('name2', n2);


events.publish('name2', 'abcde');