【发布时间】:2021-10-23 00:34:26
【问题描述】:
我一直试图找到这个答案一段时间,但作为 RxJS 和 Angular (2+) 的新手,我正在寻找一种方法来组合两个 HTTP GET 调用的结果。一旦一个呼叫完成,就必须根据该结果进行一个新呼叫。第一次调用的结果将与第二次调用合并。最好在以对象为类型的属性中。
我一直在玩mergeMap、switchMap 和concatMap。根据文档和指南,这些功能应该做我想要实现的。但是怎么做?
在我的示例中,我有一个 ID(例如 3)。这是我的代码:
this.postsService.getPostData(postId)
.switchMap(
postData => Observable.forkJoin(this.getUserByPostData(postData))
)
.subscribe( result => console.log(result) );
由于http.get,这两个函数(getPostData 和 getUserByPostData)都会返回 Observables
在这种情况下,尤其是由于forkJoin,我希望我的结果会被合并。但是,我检索到的结果已完全替换为第二个请求的结果(即 switchMap 函数中的那个)。
我将如何合并结果?是否也可以将第二个 HTTP 请求 (this.getUserByPostData) 的结果作为第一个请求结果的属性推送?
【问题讨论】: