Merge branch 'event-emitter' into sse-and-backoff
This commit is contained in:
+13
-11
@@ -122,19 +122,21 @@ export class EventEmitter<T extends EventMap> {
|
||||
const listeners = this.#listeners.get(type);
|
||||
if (!listeners) return;
|
||||
|
||||
// If no listener is provided, remove all listeners for the event type.
|
||||
// Find the listener entries (If a listener was provided, only 1 entry will be returned. Otherwise, all entries will be returned).
|
||||
const listenerEntries = Array.from(listeners).filter((entry) => !listener || entry.listener === listener || entry.wrappedListener === listener);
|
||||
|
||||
// Remove the listener entries from the listeners set.
|
||||
listenerEntries.forEach((entry) => {
|
||||
// Set the wrapped listener to a no-op function to prevent it from being called by debounced events after it's been removed.
|
||||
entry.wrappedListener = (): void => {};
|
||||
|
||||
// Remove the listener entry from the listeners set.
|
||||
listeners.delete(entry);
|
||||
});
|
||||
|
||||
// If no listener was provided, remove the listeners set from the listeners map.
|
||||
if (!listener) {
|
||||
this.#listeners.delete(type);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Find the listener entry.
|
||||
const listenerEntry = Array.from(listeners).find((entry) => entry.listener === listener || entry.wrappedListener === listener);
|
||||
|
||||
// If the listener entry is found, remove it from the listeners map.
|
||||
if (listenerEntry) {
|
||||
listeners.delete(listenerEntry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user