##// END OF EJS Templates
corrected tear down logic handling in observables. Added support for observable query results
corrected tear down logic handling in observables. Added support for observable query results

File last commit:

r109:4a375b9c654a default
r110:1a190b3a757d v1.4.0 default
Show More
Scope.ts
42 lines | 1.2 KiB | video/mp2t | TypeScriptLexer
cin
Added Renderer, WatchRendition
r94 import { IDestroyable, IRemovable } from "@implab/core-amd/interfaces";
import { isDestroyable, isRemovable } from "@implab/core-amd/safe";
cin
`Subscribable` is made compatible with rxjs, added map, filter and scan...
r102 import { isUnsubsribable, Unsubscribable } from "../observable";
cin
Added Renderer, WatchRendition
r94
export interface IScope {
cin
`Subscribable` is made compatible with rxjs, added map, filter and scan...
r102 own(target: (() => void) | IDestroyable | IRemovable | Unsubscribable): void;
cin
Added Renderer, WatchRendition
r94 }
export class Scope implements IDestroyable, IScope {
private readonly _cleanup: (() => void)[] = [];
static readonly dummy: IScope = { own() { } };
cin
`Subscribable` is made compatible with rxjs, added map, filter and scan...
r102 own(target: (() => void) | IDestroyable | IRemovable | Unsubscribable) {
cin
Added Renderer, WatchRendition
r94 if (target instanceof Function) {
this._cleanup.push(target);
} else if (isDestroyable(target)) {
this._cleanup.push(() => target.destroy());
} else if (isRemovable(target)) {
this._cleanup.push(() => target.remove());
cin
`Subscribable` is made compatible with rxjs, added map, filter and scan...
r102 } else if (isUnsubsribable(target)) {
this._cleanup.push(() => target.unsubscribe());
cin
Added Renderer, WatchRendition
r94 }
}
clean() {
const guard = (cb: () => void) => {
try {
cb();
} catch {
// guard
}
cin
linting
r109 };
cin
Added Renderer, WatchRendition
r94
this._cleanup.forEach(guard);
this._cleanup.length = 0;
}
destroy() {
this.clean();
}
}