2016-09-07 7 views
1

어떤 결과를 잃지 않고 combineLatest, 하나는 n 개의 항목을 모두 관찰 가능한 적어도 하나 개의 항목을 방출 할 때까지 단 1RXJava - 나는 두 개의 관찰 가능한을 결합하려는

combineLatest가 대기하는 다른 하나를 방출 한 후 최신이 방출 결합 관찰 할 수있을 때까지 항목을 연대순으로 다음과 같은 고려 주문 :

  • 관찰 가능한 A는 ->는 결과 A1을 방출
  • 관찰 가능한 A -> 결과 A2를 방출
  • 관찰 가능한 B ->은 결과 B1은
combineLatest은 결과 (2)를 결합합니다

방출 관찰 가능한 1의 결과 1과 관찰 가능한 2의 결과 1 (여기서 쉽게 테스터가 될 수 있음 : http://rxmarbles.com/#combineLatest).

내가

필요 내가 상관없이 하나가 빠르게하는 두 개의 관찰 가능한의 모든 항목을 결합하지해야합니다. 어떻게해야합니까?

결과 (독립있는 관찰 개시 먼저 상품 발광 항상!) 같아야

  • A1이 B1과
+0

시퀀스 'b'를 사용하여 일부 시퀀스 'a'의 모든 순열을 원한다는 뜻입니까? 아니면 우편으로 보내시겠습니까? http://reactivex.io/documentation/operators/zip.html – flakes

+0

모든 순열 ... 하나의 관측 가능 항목은 1 개의 항목 만 내보내고 다른 n 개의 항목은 n 개의 항목 (모두 n 개의 항목, 각각은 1 item) – prom85

+0

더 명확하게 만들기 위해 예제를 조정했다 ... – prom85

답변

0

참고 결합

  • A2이 안된 B1 결합 :

    관찰 가능 시퀀스 a에서 ReplaySubject을 만듭니다. 시퀀스 b에서 방출하는 각 값에 대해 해당 값을 재생 제목과 결합하여 Pair<A, B>이라는 새로운 관찰 가능 항목을 만듭니다. 평면 관측치를 함께 매핑하고 그 결과로 반환합니다.

    public static <A, B> Observable<Pair<A, B>> permutation(
        Observable<A> observableA, 
        Observable<B> observableB, 
    ) { 
        ReplaySubject<A> subjectA = ReplaySubject.create(); 
        observableA.subscribe(subjectA::onNext); 
        return observableB.flatMap(b -> subjectA.map(a -> Pair.of(a, b))); 
    } 
    
  • +0

    나는 이것을 시도 할 것이다 ... 나는 실제로 임의의 수의 항목을 순차적으로 실행하는 것을 지원하는 함수를 원한다. 나는이 함수를 작성했지만 실제로는 아름답지 않고 실제로는 rx java가 아니다. .. – prom85

    관련 문제