理想情况下,如果您可以更改函数声明,只需添加
async
关键字到
loadData
使用
await
里面是这样的:
public async loadData(id: string): void {
let data: any;
try {
data = await this.loadDataAsync();
} catch(ex) {
// Do something with ex
}
}
如果您无法更改
装载数据
函数声明,然后您可以创建一个匿名
异步
函数,然后调用
等待
在匿名函数中,如下所示:
public loadData(id: string): void {
let data: any;
try {
data = (async () => { return await this.loadDataAsync() })();
} catch(ex) {
// Do something with ex
}
}
public async loadDataAsync(): Promise<any> {
return new Promise((resolve, reject) => {
// Logic goes here
resolve(data);
});
}
每当你使用
等待
关键字,周围的函数必须标记为
异步
.
正如OP在评论中指出的,在TypeScript中,最好将promise return方法标记为
异步
以及(参见
loadDataAsync
上面的函数),因为这样可以确保返回类型始终是promise。更多信息请参见:
TypeScript Async / Await Tutorial