所以我目前有一个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
,它会给我一个我开始的帐户(Observable
{{1并且发生在它之后的学校,所以我最终会得到像
getLoggedUserInfo
那么如何获得这个Observable<Account, School>{
//Do something with the account and school
}
,以及我目前拥有的可观测量,是否可能?
我对Rx还是比较陌生的,而且让我感到困惑的一个重要部分就是语法,提前谢谢!
答案 0 :(得分: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;
}
}