1

だから私は現在Observable、ユーザーを返す1つを持っています:

 public Observable<Account> getLoggedUserInfo() {


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

    } catch (NullPointerException e) {

        return Observable.empty();

    }


}

そしてObservable、次のように、id に基づいて学校を返す があります。

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

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

}

今、私は自分の見解で学校を表現したいと思っていますが、そのためには、私Observableが始めたアカウント ( Observable getLoggedUserInfo) とその後に起こった学校を提供する を作成する必要があるため、最終的にはのようなもので

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

}

Observableでは、現在持っているオブザーバブルでこれを取得するにはどうすればよいですか? 私はまだRxにかなり慣れていないので、私を混乱させる大きな部分は構文です。よろしくお願いします!

4

1 に答える 1

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; 
  } 
} 
于 2017-01-02T04:28:15.417 に答える