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

Sie*_*gel 8 javascript observable rxjs

我有一个代码块,我在链中调用observables,如下所示:

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

现在,我了解flatMap将允许我将前一个observable的结果传递给下一个.然而,我需要的是两者都这样做,并在第一个上传递结果.让我们假设我对getData中返回的数据进行了一些清理,验证等工作,并希望将其传递给链中的所有flatMap调用.在rxjs中有一个运算符会为我做这个吗?

谢谢

car*_*ant 13

您可以使用map运算符将flatMap投影函数接收的参数与observable的结果相结合:

getData()
  .flatMap(data =>
    getMoreData(data).map(moreData => ({ data, moreData }))
  )
  .flatMap(({ data, moreData }) =>
    getEvenMoreData(moreData).map(evenMoreData => ({ data, moreData, evenMoreData }))
  )
  .flatMap(({ data, moreData, evenMoreData }) =>
    ...
Run Code Online (Sandbox Code Playgroud)