我有一个http服务,该服务返回一个对象数组,并使用此结果调用该示例中提供的另一个服务。现在,我如何才能在最后结合中间结果和最终结果。例如:result1Data [0] + result2Data [0]等。
var result1= this.service1.getData();
result1.pipe(
switchMap(data => {
let result2 = data.map(result1Data => {
return this.service2.getData(result1Data);
});
return forkJoin(...result2);
})
).subscribe(result2Data => {
//combine result1Data and result2Data
})
答案 0 :(得分:1)
以下是它的实现方式:
var result1 = this.service1.getData();
result1.pipe(
switchMap(result1Data => {
return forkJoin(result1Data.map(this.service2.getData))
.pipe(
map(result2Data => {
//combine result1Data and result2Data ()
})
)
)
})
).subscribe(result3 => {
// allready combined
})
答案 1 :(得分:0)
您可以考虑使用switchMap
中的map
和rxjs/operators
以及combineLatest
中的rxjs
的组合
const result1$ = this.service1.getData();
const result2$ = result1$.pipe(
switchMap(result1Data => this.service2.getData(result1Data))
)
const combinedResult$ = combineLatest([result1$, result2$]).pipe(
map(([result1Data, result2Data]) => {
// combine result1Data and result2Data here
return combinedResult
})
)
combinedResult$.subscribe(result3 => {
// already combined
})