我有一个从后端获取数据的 Angular 解析器。我有以下调用要执行:
GetProject(projectId): Observable<IProject>
GetSites(projectId): Observable<ISites[]>
GetPersons(siteId): Observable<IPerson[]>
我正在尝试使用 combineLatest 但不确定如何在我的场景中使用 RxJs。我希望所有请求在解析之前完成,但 GetPersons() 应该将 GetSites() 结果中第一项的 ID 作为输入。这是怎么做到的?
最佳答案
它看起来更像是你只想连接几个调用:
forkJoin([GetProject(projectId), GetSites(projectId)]).pipe(
concatMap(([project, sites]) => {
const siteId = /* whatever here */;
return GetPersons(siteId);
}),
).subscribe(...);
这还取决于您是想在观察者中接收所有响应还是仅接收最后一个响应。如果您想要所有回复,那么您需要将 GetPersons
与 map
链接起来,并附加前两个回复:
GetPersons(siteId).pipe(
map(persons => [project, sites, persons]),
)
关于angular - 如何在其中一个流依赖于另一个流的情况下使用 combineLatest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183708/