File tree Expand file tree Collapse file tree 1 file changed +6
-5
lines changed
packages/dev/core/src/Misc Expand file tree Collapse file tree 1 file changed +6
-5
lines changed Original file line number Diff line number Diff line change @@ -83,7 +83,7 @@ export class Observer<T> {
83
83
* It will be set by the observable that the observer belongs to.
84
84
* @internal
85
85
*/
86
- public _remove : Nullable < ( ) => void > = null ;
86
+ public _remove : Nullable < ( defer ?: boolean ) => void > = null ;
87
87
88
88
/**
89
89
* Creates a new observer
@@ -109,10 +109,11 @@ export class Observer<T> {
109
109
/**
110
110
* Remove the observer from its observable
111
111
* This can be used instead of using the observable's remove function.
112
+ * @param defer if true, the removal will be deferred to avoid callback skipping (default: false)
112
113
*/
113
- public remove ( ) {
114
+ public remove ( defer = false ) {
114
115
if ( this . _remove ) {
115
- this . _remove ( ) ;
116
+ this . _remove ( defer ) ;
116
117
}
117
118
}
118
119
}
@@ -241,10 +242,10 @@ export class Observable<T> {
241
242
242
243
// attach the remove function to the observer
243
244
const observableWeakRef = isWeakRefSupported ? new WeakRef ( this ) : { deref : ( ) => this } ;
244
- observer . _remove = ( ) => {
245
+ observer . _remove = ( defer = false ) => {
245
246
const observable = observableWeakRef . deref ( ) ;
246
247
if ( observable ) {
247
- observable . _remove ( observer ) ;
248
+ defer ? observable . remove ( observer ) : observable . _remove ( observer ) ;
248
249
}
249
250
} ;
250
251
You can’t perform that action at this time.
0 commit comments