2017-01-01 6 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(); 

    } 


} 

을 그리고 나는이처럼 보이는 ID를 기반으로, 학교를 반환하는 Observable을 가지고 :

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

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

} 

지금 나는 내보기에 학교를 대표 할,하지만 난 나에게 내가 시작 계정을 줄 것 인 Observable합니다 (ObservablegetLoggedUserInfo)과 모델명 : SCH를 만들 필요가 그렇게하기 위해 그 후 무슨 일이 있었 OOL는, 그래서 난 그것도 가능하다, 내가 현재 가지고있는 관찰 가능한 함께, 어떻게 내가이 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; 
    } 
}