2017-12-15 9 views
-2

동일한 유형의 데이터를 방출하는 두 개의 Observable이 있습니다. 그러나 둘 다 스캔 조작자가 다른 값을 초기 값으로 내 보낸 마지막 값에 의존합니다. 나는 그들을 합병해야한다. 내 Observable이 다른 값에 의해 트리거되기 때문에 다른 사람을 구독하게 만들 수 없습니다. 나는 주제가 관련되어야한다고 생각하지만 어떻게 확신 할 수 없다.Merge dependent observables

val intents: Observable<Intent> = ... 

intents 
    .scan(MyViewState.default(), intentToStateReducer) 

intents 
    .map(intentToActionMapper) 
    .compose(actionDispatcher) 
    .scan(MyViewState.default(), resultToStateReducer) 

두 개의 Observable은 자체 상태를 유지합니다. 서로 합쳐도 서로의 최신 가치를 볼 수는 없습니다. 각 Observable의 새 상태는 자체 스트림의 이전 값을 기반으로합니다.

+1

샘플 코드로 질문을 명확히 할 수 있습니까? – GVillani82

+0

@ GVillani82 added – Jamol

+0

입력 데이터와 출력 데이터를 제공해야합니다. 이 글을 쓰는 시점에서 귀하의 코드는 귀하의 서사와 일치하지 않습니다. 두 관측 값이 서로의 초기 값에 어떻게 의존 할 수 있는지, 그리고 그 의미가 무엇인지는 명확하지 않습니다. –

답변

0
final String[] aStrings = {"A1", "A2", "A3", "A4"}; 
    final String[] bStrings = {"B1", "B2", "B3"}; 

    final Observable<String> aObservable = Observable.fromArray(aStrings); 
    final Observable<String> bObservable = Observable.fromArray(bStrings); 

    Observable.merge(aObservable, bObservable) 
      .subscribe(getObserver()); 

병합 연산자를 사용하여 Observable 결합 : 병합은 Observable의 순서를 유지하지 않습니다. 7 개의 값이 모두 나오지 않을 수도 있습니다. 예 - "A1", "B1", "A2", "A3", "A4", "B2" "B3"- 무엇이든간에