Skip to content

Commit 31690c8

Browse files
authored
fix(core): avoid firing removed event listeners (#11263)
1 parent 55ea0ee commit 31690c8

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

packages/core/data/observable/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ interface ListenerEntry {
4040
callback: (data: EventData) => void;
4141
thisArg?: any;
4242
once?: true;
43+
_isRemoved?: true;
4344
}
4445

4546
interface ListEntryMap {
@@ -301,7 +302,7 @@ export class Observable {
301302

302303
// If we have neither `thisArg` nor `callback`, just remove all events
303304
// of this type regardless.
304-
305+
entry._isRemoved = true;
305306
entries.splice(i, 1);
306307
i--;
307308
}
@@ -443,7 +444,7 @@ export class Observable {
443444
}
444445

445446
private static _handleListenerEntry<T extends EventData>(entry: ListenerEntry, index: number, observers: Array<ListenerEntry>, data: T): void {
446-
if (!entry) {
447+
if (!entry || entry._isRemoved) {
447448
return;
448449
}
449450

0 commit comments

Comments
 (0)