【发布时间】:2018-08-14 07:25:20
【问题描述】:
这个类有点特别,因为它在构造函数中使用了很多异步调用,而构造函数不能是异步的,所以我使用了我在互联网上读到的一种特殊模式:
export class MapLayer {
public Ready: Promise<any>;
constructor() {
this.instantiate();
}
async instantiate(): Promise<void> {
return this.Ready = new Promise((resolve, reject) => {
this.parseServiceDefiniton().then(() => {
// ...
resolve(undefined);
}).catch((ex) => {
console.log('reject');
reject();
});
});
}
async parseServiceDefiniton(): Promise<boolean> {
throw Error('test');
}
}
以及我如何使用它:
const lyr: MapLayer = new MapLayer ();
lyr.Ready.then(() => {
}).catch(ex => {
console.log(ex);
});
由于parseServiceDefiniton 函数中可能发生异常,我正在模拟这种情况。目前,我收到以下错误:
未捕获(承诺中):[对象未定义]
在我看到的控制台中:
拒绝
未定义
我看不出哪里没有发现异常!
【问题讨论】:
标签: typescript exception-handling promise