2017-01-01 8 views
1

だから私は、現在のユーザーを返す1 Observable、持っている:放出する観察可能な取得2種類

public Observable<Account> getLoggedUserInfo() { 


    try { 
     return accountService.me(preferencesHelper.getToken()).concatMap(remoteAccount -> { 
      return localDatabase.addAccount(remoteAccount); 
     }); 

    } catch (NullPointerException e) { 

     return Observable.empty(); 

    } 


} 

をそして、私はこのようになりますIDに基づいて、学校を返すObservableを、持っています:

public Observable<School> getSchoolById(@NonNull final String id){ 

    return schoolService.getSchool(id).concatMap(remoteSchool->localDatabase.addSchool(remoteSchool)); 

} 

は今、私は私の見解で学校を表現したいが、私は私がして開始したアカウントを与えるだろうObservableObservablegetLoggedUserInfo)とSCHを作成する必要があることを行うために、それの後に起こった001は、ので、私はそれも可能ですが、私は現在持っている観測で、だから、どのように私はこのObservableを得るん

Observable<Account, School>{ 
//Do something with the account and school 

} 

ようなもので終わることだろうか? 私はまだRxにはかなり新しく、私を混乱させる大きな部分は構文です、事前に感謝します!

答えて

2

タプルまたは中間クラスを使用します。

public Observable<Tuple<<Account, School>> doSomething() { 
    return getLoggedUserInfo().zip(getSchoolById("id"), (f, s) -> new Tuple(x, y)); 
} 

私はあなたが適切なタプルを使用することをお勧めしますが、それはのように簡単になります

public class Tuple<X, Y> { 
    public final X x; 
    public final Y y; 
    public Tuple(X x, Y y) { 
    this.x = x; 
    this.y = y; 
    } 
} 
関連する問題