在rxjs传递复合数据可观察链

在rxjs传递复合数据可观察链

问题描述:

我有一个代码块,在那里我打电话观测链中,像这样:在rxjs传递复合数据可观察链

getData().flatMap(results => { 
    return callNextDataMethod(results); 
} 
.flatMap(results2 => { 
    // next operation and so forth 
}) 

现在,我明白flatMap会让我通过的结果先前可观察到下一个。然而,我需要的是既要做到这一点,又要在第一次通过结果。假设我对getData中返回的数据执行了一些清理,验证等操作,并且我希望将这些数据传递给链中的所有flatMap调用。 rxjs中是否有一个运算符会为我执行此操作?

感谢

可以使用map操作由flatMap投影功能与观察到的结果收到的参数组合:

getData() 
    .flatMap(data => 
    getMoreData(data).map(moreData => ({ data, moreData })) 
) 
    .flatMap(({ data, moreData }) => 
    getEvenMoreData(moreData).map(evenMoreData => ({ data, moreData, evenMoreData })) 
) 
    .flatMap(({ data, moreData, evenMoreData }) => 
    ... 
+0

THX。还有点卡住了。想你的例子,但在代码失败不幸: –

+0

this.getStuffOne() \t .flatMap(数据=> { \t调试器; \t this.getStuffTwo()映射(MOREDATA => {数据,MOREDATA}); \t }) \t .flatMap((数据,MOREDATA)=> { \t调试器; \t this.getStuffThree()映射(evenMoreData => {数据,MOREDATA,evenMoreData}); \t}) –

+0

我已经更新答案。它有一些语法错误 - 需要用'()'包裹的'{}'等等。 – cartant