Я решил, что мне нужно какое-то обещание об отмене, поэтому я попытался написать его сам. Однако я застрял на невозможности установить элемент экземпляра до завершения вызова super () - и для расширения Promise может потребоваться установить что-то перед super ().
Итак, мой вопрос: есть ли простой способ, как этого добиться, не переписывая всю функциональность Promise?
export class CancelablePromise<T> extends Promise<T> {
private onCancel: () => void = () => {};
public constructor(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void, oncancel: (handler: ()=>void)=>void) => void) {
super( (res, rej) => {
executor(res, rej, ( handler: () => void) => { this.onCancel = handler ; });
});
}
public Cancel(): void {
this.onCancel();
}
}