Выполняйте наблюдаемое параллельно, пока что-то делаете с каждым ответом - PullRequest
0 голосов
/ 23 января 2019

У меня есть список наблюдаемых (obs $).

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

Каждый раз, когда завершается каждое наблюдаемое (ob $),

Мне нужно что-то делать, напр.обновить локальный объект, связанный с каждой наблюдаемой, соответственно ob1 $ = ob1 (v1) .do_something ();ob1 $ .subscribe (e => v1.state = 'ok');

Чтобы обработать все ob $ в obs $, я могу рекурсивно пройти через все ob $ и закончить то, что я хочу сделать -Обновление v1, v2 ...

Теперь, когда я думаю о том, как я могу это сопоставить, думаю об использовании forkJoin

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

Объединенный ответ (res) не 'не подходит для моего случая.Я прав?

Есть ли в Rxjs какой-нибудь способ, позволяющий мне достичь того, чего я хочу?

1 Ответ

0 голосов
/ 23 января 2019

Вы можете сопоставить каждый ответ с index или любым другим, чтобы вы знали, какой источник завершен, а затем просто используйте 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
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...