我需要先从服务器加载一些数据,然后再进行进一步处理。所以我有这个功能:
async load() {
await this.reloadClients()
this.findTimeSheets();
}
findTimeSheets() {
for (const client of this.clients) {
console.log('Client: ' + client.lastName);
}
}
单击组件上的按钮时将调用此函数。
我需要函数this.timeSheets等待,直到this.reloadClients完成处理,因此数据已准备就绪。这是重新加载功能,它应该加载客户端列表并将其存储在this.clients中:
reloadClients() {
this.clientService.search({
page: '0',
query: 'assigner.id:' + this.selectedAssigner.id,
size: '250',
sort: ''})
.subscribe((res: HttpResponse<Client[]>) => { this.clients = res.body; this.init(res.body); }, (res: HttpErrorResponse) => this.onError(res.message));
}
现在发生的是,我需要单击两次按钮以获取正确的数据。因此,findTimeSheets()中的循环在第二次单击(将数据打印到控制台)之后起作用。
我的方法是使用await,但这不起作用。
由于我是Angular的新手,因此需要一些帮助来解决此问题。
答案 0 :(得分:0)
您有await this.reloadClients()
,但是功能reloadClients
不是async
。因此,等待是没有用的。
使reloadClients
异步,例如
async reloadClients() {
await this.clientService.search({
page: '0',
query: 'assigner.id:' + this.selectedAssigner.id,
size: '250',
sort: ''})
.subscribe((res: HttpResponse<Client[]>) => { this.clients = res.body; this.init(res.body); }, (res: HttpErrorResponse) => this.onError(res.message))
.toPromise();
}