javascript add Single Event Lister for multiple events like ajax function callbacks succss, fail etc

91 Views Asked by At

I want to crate javascript object that accepts setting and provide multiple events with single addListener function. for example addListener({success: callback,fail:callback}) etc. I hope my requirement is clear.

var myCustomObject=new MyCustomeObject({name:'anu', age:'30'});

myCustomObject.addListener({

success: function(e){ console.log(e)},
fail: function(ef){ console.log(ef)}

});
1

There are 1 best solutions below

5
On

You can implement your own EventEmitter like this:

const EventEmitter = function () {
    this.events = {};
};

Then you need to create function for subscribe:

EventEmitter.prototype.on = function (event, listener) {
if (typeof this.events[event] !== 'object') {
    this.events[event] = [];
}

this.events[event].push(listener);
};

and of course function for emit:

EventEmitter.prototype.emit = function (event) {
let i, listeners, length, args = [].slice.call(arguments, 1);

if (typeof this.events[event] === 'object') {
    listeners = this.events[event].slice();
    length = listeners.length;

    for (i = 0; i < length; i++) {
        listeners[i].apply(this, args);
    }
}
};