2017-04-12 5 views
1

여러 observables의 결과를 부모 observable로 결합하고 싶습니다. 나는 모든 관측 자료에 한 번에 접근 할 수는 없으며, 프로그램 실행 전반에 걸쳐 구독하게 될 것입니다. otherObservable에 의해 전송 된 이벤트가 compoundObservable의 가입자에 의해 등록되지 않는 한RxJava Observables 결합하기

... 
compoundObservable = compoundObservable.mergeWith(firstObservable); 
... 
compoundObservable = compoundObservable.mergeWith(secondObservable); 
... 

접근 방식은, 일을하지 :

는 지금까지 내 방식이었다.

어떻게 이러한 관측치를 결합 할 수 있습니까?

+0

귀하의 경우'제목 '을 옵션으로 사용 하시겠습니까? – Lamorak

+0

그래서'firstObservable'와'secondObservable'은 누군가가 (그 당시에)'compoundOversable'에 가입 한 후에 만 ​​생성 될 것입니까? –

+0

'firstObservable'과'secondObservable'이 이미 생성되었습니다. 나는'observerable '의 결과를'compoundObservable'에 누적하고자합니다. 'Subject'에 관해서는 제가 열려 있습니다 - 답변을 게시하십시오! – bkach

답변

3

Subject을 사용하면 언제든지 관찰 기록을 구독 할 수 있으며 대상의 모든 가입자는 모든 항목을 가져옵니다. 디버깅 할 때 약간 까다로울 수 있습니다. 내가 제대로 문제를 이해하면

PublishSubject<Object> subject = PublishSubject.create(); 
Observable<Object> observable1 = ...; 
observable1.subscribe(subject); 

subject.subscribe(...) // will eventually also get emisions from observable2 

Observable<Object> observable2 = ...; 
observable2.subscribe(subject); 
0

, 당신은 당신의 관찰 가능한 쌍을 여러 사업자가 :

이제 결정해야을하는 관측 자료가 데이터를 산출하는 속도와 방법 그들이 생산하는 데이터를 쌍으로 만들 계획입니다. 예를 들어

:

  • CombineLatest - obs1 다음 obs1로부터 데이터 obs2 의해 생성 된 최신의 데이터와 쌍한다 obs2보다 빠른 속도로 데이터를 생성하는 경우, obs1 및 obs2 데. 따라서 obs1의 여러 항목을 obs2의 동일한 항목과 쌍으로 만듭니다.
  • Zip - obs1과 obs2가있는 경우 obs1이 obs2보다 빠른 속도로 데이터를 생성하면 obs2의 데이터는 obs2가 값을 생성 할 때만 쌍으로됩니다.
  • 그리고/다음 /시 - 두 개 이상의 관찰 가능한
  • 을 결합의 편의를 사용

참고 :도 (.NET 용 - RxNET) 무료 책이LINK에서. 짝을 이루는 시퀀스 섹션 결합 시퀀스을 자세히 설명하고 샘플을 확인하십시오. 구문은 비슷하며 연산자의 목적은 여러 구현에서 유지됩니다.