[英]Use data from one observable in another and then return result as other observable
[英]How to use data from an observable in other methods?
我正在開發Angular4應用。
這是我用來獲取數據的服務-
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']);
}
}
然后在我的組件中
export class PrintButtonComponent implements OnInit {
bookings: any;
constructor(private service: BookingService) {}
ngOnInit() {}
downloadPDF() {
this.getBookings(memberID);
//pdf creation logic
}
getBookings(memberID: number) {
this.service.getMemberBookings(memberID).subscribe(data => this.bookings = data);
}
}
問題是我想在downloadPDF方法中使用服務中的數據,因為其中將需要其他數據來創建PDF。 但是,當我從訂閱返回數據或將其設置為屬性時,它給出的是不確定的。 我知道這是由於異步性質造成的,但是我不想將我的pdf創建邏輯放在subscribe方法中。 那么我該如何解決這個問題呢? 我對Angular和Observable相當陌生。 謝謝。
由於上面的代碼不包含每個可觀察到的多個值,並且不需要堅持下去,因此可以使用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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.