【发布时间】:2019-01-25 21:47:12
【问题描述】:
我决定我需要某种可取消的承诺,所以我尝试自己编写它。但是,我陷入了无法在 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();
}
}
【问题讨论】:
标签: javascript typescript promise