【发布时间】:2020-09-14 02:12:33
【问题描述】:
我是使用 RxJs 运算符的初学者,我需要一种方法,该方法从服务中调用 5 个可观察对象,并且仅在第一个可观察对象完成后才应从服务中获取数据,然后组合所有可观察对象并转换为新的observable 并在函数中返回一个新的 observable。下面的代码说明了这种情况。
GetAllDetails(): Observable<AllDetails> {
const user = this.service.getUser() // Observable<User>
const firstDetails = this.service.getFirstDetail() // returns Observable<FirstDetail>
const secondDetails = this.service.getSecondDetail() // returns Observable<SecondDetail>
const thirdDetails = this.service.getThirdDetail() // returns Observable<ThirdDetail>
const fourthDetails = this.service.getFourthDetail() // returns Observable<FourthDetail>
// need to return a value that something compatible with Observable<AllDetails>
// so the logic should check if user info available then do combining all observable values and
// return as new observable
return of(new AllDetails(first, second, third, fourth)
}
我尝试使用 CombineLatest 和 switchMap,但在我的第一个 observable 完成后我无法实现这一点。感谢是否有人可以帮助我解决这个问题。
【问题讨论】: