2017-03-31 80 views
1

假设我有两个观测:如何将来自一个可观察值的值映射到具有可观察值的对上?

Observable<MainInfo> mainInfoObs

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

我想以某种方式将这些观测相结合,收到Pair<MainInfo, AdditionalInfo>

我不能只用拉链,因为additionalInfoObs取决于mainInfo

所以,我要像做

mainInfoObs 
    .map(mainInfo->new Pair(mainInfo, 
        getAdditionalInfo(mainInfo).toBlocking().last() 
        ) 
     ) 

但是,块和挂起。

请帮我 - 如何结合observables,因为我想?

回答

0

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

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