我正在开发Angular4应用程序。
这是我用来获取数据的服务 -
WebSecurityConfiguration
然后在我的组件中 -
export class BookingService {
constructor(private http: HttpClient) {}
getMemberBookings(memberID: number): Observable<any> {
return this.http.get('http://myapi.com/bookings/member/'+memberID).map(response => response['bookings']);
}
}
问题是我想在downloadPDF方法中使用服务中的数据,因为其中有其他数据需要创建PDF。 但是当我从订阅中返回数据或将其设置为属性时,它将给出undefined。我知道这是由于异步性质,但我不想把我的pdf创建逻辑放在subscribe方法中。 那么我该如何解决这个问题呢?我对Angular和observables都很陌生。 谢谢。
答案 0 :(得分:0)
由于上面的代码不涉及每个可观察的多个值,并且不需要坚持它们,因此可以使用async..await
完成此操作而不需要额外的嵌套:
async downloadPDF() {
await this.getBookings(memberID);
//pdf creation logic
}
async getBookings(memberID: number) {
this.bookings = await this.service.getMemberBookings(memberID).toPromise();
}
与任何其他RxJS运算符一样,必须导入toPromise
。