По моему мнению, обработка наблюдаемых таким образом затруднит поддержание кода в долгосрочной перспективе. Если у вас есть несколько наблюдаемых для подписки, вам также нужно будет обработать их подписку и т. Д.
Итак, для этого конкретного случая, вот как я бы решил:
const source = of(1, 2, 3);
const subscription = source
.pipe(
/**
* `Pause` the main observable
* Won't to get the next emitted value until this inner subscription is done
*/
concatMap(v => {
// The if block
if (v === 2) {
// Getting some data from the condition
return of('a', 'b', 'c');
}
return of('default value');
}),
)
.subscribe(v => console.log('value received!', v))
concatMap
является одним из операторов высокого порядка .
. Он также возвратит наблюдаемую, чья подписка будет внутренне , обработанной concatMap
.
StackBlitz .
Редактировать после прочтения первого комментария
const microS1$ = ...;
microS1$
.pipe(
// Insert your condition here
filter(content => typeof content === 'string')
)
.subscribe(d => {
// Send the data to the second microservice
microserviceTwo.sendData(d);
})