tags: delete command/response msg if the other is deleted

This commit is contained in:
Dragory 2019-01-06 14:39:16 +02:00
parent 145f5866cf
commit 50c6233190
6 changed files with 208 additions and 13 deletions

View file

@ -11,12 +11,13 @@ export class QueuedEventEmitter {
this.queue = new Queue();
}
on(eventName: string, listener: Listener) {
on(eventName: string, listener: Listener): Listener {
if (!this.listeners.has(eventName)) {
this.listeners.set(eventName, []);
}
this.listeners.get(eventName).push(listener);
return listener;
}
off(eventName: string, listener: Listener) {
@ -28,6 +29,15 @@ export class QueuedEventEmitter {
listeners.splice(listeners.indexOf(listener), 1);
}
once(eventName: string, listener: Listener): Listener {
const handler = this.on(eventName, (...args) => {
const result = listener(...args);
this.off(eventName, handler);
return result;
});
return handler;
}
emit(eventName: string, args: any[] = []): Promise<void> {
const listeners = [...(this.listeners.get(eventName) || []), ...(this.listeners.get("*") || [])];