在下面的代码中,我有 2 个调用,getDetail 和 Save。 保存使用在第一次调用 getDetail 的订阅中创建的对象“this.detail$”。
问题是 this.detail$ 在调用 Save 之前从未被赋值。 在将 this.detail$ 分配给 bit 之后,我尝试将 Save 逻辑放入订阅中的函数中,我得到了相同的结果。 处理此问题的最佳方法是什么?
SetPublishedFlag(flag: boolean, _id:string){
this.id = _id;
this.getDetail();
this.Save(flag);
}
getDetail(): void {
this.data.getEventDetail(this.id).subscribe(data => this.detail$ = data as DetailModel);
}
Save(flag: boolean) {
this.detail$.Published = flag;
this.edit.editEvents(this.detail$, this.id);
}
}
最佳答案
尝试这样的事情:
async SetPublishedFlag(flag: boolean, _id:string){
this.id = _id;
this.detail$ = await this.getDetail();
this.Save(flag);
}
getDetail(): Promise<DetailModel> {
return this.data.getEventDetail(this.id).toPromise();
}
Save(flag: boolean) {
this.detail$.Published = flag;
this.edit.editEvents(this.detail$, this.id);
}
}
关于javascript - Angular 6 - 如何等待通话订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588511/