40 lines
850 B
JavaScript
40 lines
850 B
JavaScript
'use strict';
|
|
|
|
function SyncEventEmitter () {
|
|
this.listeners = new Map();
|
|
}
|
|
|
|
SyncEventEmitter.prototype.on = function (ev, callback) {
|
|
if (this.listeners.has(ev)) {
|
|
this.listeners.remove(ev);
|
|
}
|
|
|
|
this.listeners.set(ev, callback);
|
|
|
|
return this;
|
|
};
|
|
|
|
SyncEventEmitter.prototype.emit = function (ev) {
|
|
if (this.listeners.has(ev)) {
|
|
let params = [];
|
|
|
|
for (var i = 1 ; i < arguments.length ; ++i) {
|
|
params.push(arguments[i]);
|
|
}
|
|
|
|
return this.listeners.get(ev).apply(undefined, params);
|
|
}
|
|
};
|
|
|
|
SyncEventEmitter.prototype.removeListener = function (ev) {
|
|
if (this.listeners.has(ev)) {
|
|
this.listeners.remove(ev);
|
|
}
|
|
};
|
|
|
|
SyncEventEmitter.prototype.hasListener = function (ev) {
|
|
return this.listeners.has(ev);
|
|
};
|
|
|
|
module.exports = SyncEventEmitter;
|