【发布时间】:2018-04-30 01:26:36
【问题描述】:
我正在使用 Angular 的 HttpClient 模块查询嵌套的 RESTful API。检索一个完整的实体需要从几个端点获取数据,这些端点存储在第一个请求的响应中。
我正在使用forkJoin 并行发送 2、3、4 等请求。这很好用,但是,我“丢失”了第一个请求的结果。我目前的解决方案是通过of() 运算符将请求的结果转换为可观察的,将其包含在forkJoin 中
this.http.post(url, geoRequest, httpOptions).pipe(
concatMap(resp => {
return forkJoin(
of(resp),
this.http.get(resp[0]["_links"].endpointA.href, httpOptions),
this.http.get(resp[0]["_links"].endpointB.href, httpOptions)
);
})
);
这会产生一个包含三个元素的数组,每个元素包含每个请求的结果。完美的。但是,“重新创建”初始 observable(通过 of(resp))感觉有点 hacky,我想知道是否有更优雅的解决方案。
【问题讨论】: