tags: delete command/response msg if the other is deleted
This commit is contained in:
parent
145f5866cf
commit
50c6233190
6 changed files with 208 additions and 13 deletions
|
@ -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("*") || [])];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue