Методы, которые извлекают данные, не должны возвращать подписки, а должны возвращать наблюдаемые,
private getTrendingRentals() {
return this.rentalService.getRentals();
}
rxjs предоставляет несколько функций для решения этой проблемы. Взгляните на функции: merge
, mergeMap
, switchMap
, concatMap
.
Например:
this.auth.getUserId().pipe(
mergeMap(userId => this.getTrendingRentals()),
mergeMap(trendingRentals => this.getFollowingRentals()),
mergeMap(followingRentals => this.getFollowingRentals()),
mergeMap(luxuryRentals => this.getLuxuryRentals())
).subscribe(...)
или
this.auth.getUserId().pipe(
mergeMap(userId => this.getTrendingRentals()),
mergeMap(trendingRentals => merge(this.getFollowingRentals(), this.getFollowingRentals(), this.getLuxuryRentals()))
).subscribe(...)
Зависимость от ваших конкретных потребностей.
Обновление:
@jcal решение с concat
выглядит лучше:)