并行执行可观察的,同时对每个响应进行处理

时间:2019-01-23 09:55:07

标签: angular rxjs

我有一个观测值列表(obs $)。

 obs$ = [ob1$, ob2$..];

每次可观察(ob $)完成时,

我需要做点事,例如。更新分别与每个可观察对象相关的本地对象     ob1 $ = ob1(v1).do_something();     ob1 $ .subscribe(e => v1.state ='ok');

要处理obs $中的所有ob $,我可以递归地遍历所有ob $并完成我想做的事情-更新v1,v2 ...

现在,当我考虑如何做到这一点时,就要考虑使用forkJoin

Observable.forkJoin(...obs$).subscribe( res => ..)

联合响应(res)不适合我的情况。我对么?

Rxjs中有什么方法可以实现我想要的?

1 个答案:

答案 0 :(得分:1)

您可以将每个响应映射到index或其他任何对象,以便知道Observable完成了哪个源,然后只需使用merge

obs$ = [ob1$, ob2$, ...];
const mappedObs$ = obs$.map((ob$, index) => ob$.pipe(
  map(value => ({ index, value })),
));

merge(...mappedObs$).subscribe(({ index, value }) => {
  if (index === 42) {
    // do whatever
  }
});