##// END OF EJS Templates
Added childContainer service to container services, ServiceContaier is destroyable, fixed browser Uuid version
Added childContainer service to container services, ServiceContaier is destroyable, fixed browser Uuid version

File last commit:

r134:511bcc634d65 ioc ts support
r146:f3f5c56d3b3e v1.4.0-rc5 default
Show More
AsyncComponent.ts
41 lines | 1.2 KiB | video/mp2t | TypeScriptLexer
import { Cancellation } from "../Cancellation";
import { IAsyncComponent, ICancellation, ICancellable, IDestroyable } from "../interfaces";
import { destroy } from "../safe";
const noop = () => void (0);
export class AsyncComponent implements IAsyncComponent, ICancellable {
_cancel: ((e: any) => void) = noop;
_completion: Promise<void> = Promise.resolve();
getCompletion() { return this._completion; }
runOperation(op: (ct: ICancellation) => any, ct: ICancellation = Cancellation.none) {
// create inner cancellation bound to the passed cancellation token
let h: IDestroyable;
const inner = new Cancellation(cancel => {
this._cancel = cancel;
h = ct.register(cancel);
});
// TODO create cancellation source here
const guard = async () => {
try {
await op(inner);
} finally {
// after the operation is complete we need to cleanup the
// resources
destroy(h);
this._cancel = noop;
}
};
return this._completion = guard();
}
cancel(reason: any) {
this._cancel(reason);
}
}