2017-01-01 49 views
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这会给我,我开始与帐户(ObservablegetLoggedUserInfo)和SCH OOL它之后发生的事情,所以我会就要结束了类似

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

} 

那么,如何获得这个Observable,与我目前拥有的观测,是它甚至可能吗? 我对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; 
    } 
} 
相关问题