2017-03-31 82 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)