如何将一个observable的值映射到具有可观察值的值?

时间:2017-03-31 15:54:18

标签: java rx-java reactivex

假设我有两个可观察量:

Observable<MainInfo> mainInfoObs

Observable<AdditionalInfo> additionalInfoObs(MainInfo mainInfo)功能。

我想以某种方式将这些观察者组合起来接收Pair<MainInfo, AdditionalInfo>

我不能只使用zip,因为additionalInfoObs取决于mainInfo

所以我想做一些像

这样的事情
mainInfoObs
    .map(mainInfo->new Pair(mainInfo,
                    getAdditionalInfo(mainInfo).toBlocking().last()
                    )
        )

但那会阻塞并挂起。

请帮助我 - 如何按我的意愿组合可观察物?

1 个答案:

答案 0 :(得分:0)

事实证明,flatMap有一个带有2个参数的变体,这就是我需要的。 这是我使用flatmap的解决方案:

mainInfoObs.flatMap(mainInfo->getAdditionalInfo(mainInfo), Pair::new)