Операторы, с которыми я сталкивался до сих пор, не поддерживают состояние полученных или отправленных значений.Как и поток воды, они просто позволяют потоку данных изменяться так, как они хотят.
Одним из решений может быть использование операторов вложенных каналов, поэтому у вас все еще есть доступ к данным от ваших предыдущих операторов.
Давайте для ясности определим все ваши наблюдаемые под функцией.
goFunc(id) {
return this.goSvc.create(id, "Build Market Share");
}
marketFunc(id, goData) {
return this.marketSvc.create(id, (<GrowthOpportunity>goData).id, "Market Segment - TBD");
}
companyFunc(id, msData) {
return this.companySvc.create({ id: id, msId: (<MarketSegment>msData).id }, "Company Type - TBD");
}
Вот функция для вложенного трубопровода,
someFunc() {
this.kbSvc.create(kb).pipe(
mergeMap(kb => this.goFunc(kb).pipe(
mergeMap(goData => this.marketFunc(kb,goData).pipe(
mergeMap(msData => this.companyFunc(kb,msData).pipe(
map((companyData) => [goData,msData,companyData])
)),
))
))
).subscribe(data => {
//data will have [goData,msData,companyData]
console.log(data);
});
}
Это должно дать ожидаемый результат.