Возьмите подписанный результат и немедленно примените его к другой подписке - PullRequest
1 голос
/ 31 мая 2019

Используя RxJS, у меня возникает ситуация, когда мне нужно извлечь одно значение из Observable, а затем немедленно применить его к отдельной подписке, используя pluck().

У меня есть работоспособное решение, но онобезвкусный.Есть ли способ упростить или улучшить процесс?

this.fooService.singleValue$.subscribe(value => {
   this.barService.allResults$.pipe(pluck(value)).subscribe(pluckedResult => {
       // do something with the plucked result
   });
});

1 Ответ

4 голосов
/ 31 мая 2019

Вложенные подписки - не рекомендуемый способ действий (т.е. использование явной подписки). В таких ситуациях лучше использовать операторы switchMap / concatMap / mergeMap, поэтому вам не нужно подписываться дважды, а делать это только один раз.

this.fooService.singleValue$.pipe(switchMap((value => {
                    return this.barService.allResults$.pipe(pluck(value));
                }))).subscribe(() => {
                    //do something
                });
...