taskon
Version:
A simple JavaScript/TypeScript tasks queue that supports dynamic concurrency control
27 lines • 862 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageHub = void 0;
class MessageHub {
constructor() {
this.listenerLookup = {};
}
subscribe(key, listener) {
if (!this.listenerLookup[key]) {
this.listenerLookup[key] = [];
}
this.listenerLookup[key].push(listener);
return () => this.unsubscribe(key, listener);
}
unsubscribe(key, listener) {
const index = this.listenerLookup[key].indexOf(listener);
this.listenerLookup[key].splice(index, 1);
}
publish(key, ...params) {
if (this.listenerLookup[key]) {
return Promise.all(this.listenerLookup[key].map((listener) => listener(...params)));
}
}
}
exports.MessageHub = MessageHub;
exports.default = MessageHub;
//# sourceMappingURL=message-hub.js.map