Rxjs-如何在多个http服务后只订阅一次



我对rxjs运算符有问题。我有一个字符串数组的可观察

role$: Observable<string[]>;

我创建了一个函数,需要使用所有的字符串来调用http服务,并将每个字符串作为参数。

getDetails() {
this.role$.pipe(concatMap(role =>{
return this.myService.getDetails(role)
})).subscribe(res => {
console.log(res)
})
}

我写了这个函数,但我需要在订阅之前完成所有的http调用。我需要完成所有的调用,在订阅中我只需要创建一次逻辑。在我写的函数中,我有多个console.log,基于我所做的服务器调用的数量。我只会有一个响应,其中包含每个服务器调用的响应数组

您可以使用RxJS库中的forkjoin。

getDetails() {
this.role$.pipe(
mergeMap(
roles => forkJoin(roles.map(role => myService.handle(role))))
).subscribe(res => console.log(res))
}

最新更新