我有一段代码在这样的链中调用可观察对象:

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 }) =>
    ...

关于javascript - 在rxjs可观察链中传递复合数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43598605/

10-11 23:54
查看更多