Using jQuery or nodejs makes you addicted to pubsub (publish/subscribe) model.
Nodejs has nattive support for event emitters but javascript doesn’t have. Events are only binded to a DOM, using which doesn’t make sense and its also adds to performance cost.
To solve the problem i wrote a custom class which implements `on` and `emit` method, Yes some methods like `once` are missing.
var tikEvent = function () {
this.listeners = {};
};
tikEvent.prototype.on = function (event, callback) {
if (!this.listeners.hasOwnProperty(event)) {
this.listeners[event] = [];
}
this.listeners[event].push(callback);
};
tikEvent.prototype.emit = function (event) {
if (this.listeners.hasOwnProperty(event)) {
var args = Array.prototype.slice.call(arguments);
args.shift();
for (var i = 0; i < this.listeners[event].length; ++i) {
try {
this.listeners[event][i].apply(null, args);
} catch (e) {
console.error(e);
}
}
}
};
//Some test code.
vat test = new tikEvent();
test.on('emitted',function(d){
console.log(d);
}
test.emit('emitted',"test");
Recent Comments