1

所以我目前有一个Observable,它返回用户:

 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它会给我一个我开始的帐户( the Observable getLoggedUserInfo)和之后发生的学校,所以我会结束有类似的东西

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

}

那么我如何获得这个Observable,用我目前拥有的 observables,它甚至可能吗?我对 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 回答