2016-09-01 4 views
0

어떤 조건이 충족 될 때까지 항목을 내 보낸 observable을 반복하고 싶습니다. 그런 다음 onComplete를 호출하고 발광을 종료합니다. 이 같은 뭔가가 작동 것이지만RxJava Observable.Interval end emitting

나는, 그러나 나는 틀렸다 :

return Observable.interval(5, TimeUnit.SECONDS) 
    .flatMap(tick -> { 
    if (condition) { 
     return Observable.empty(); 
    } 
    doSomething(); 
    return Observable.just(null); 
    }); 

답변

3

당신은 takeUntil를 사용할 수 있습니다

return Observable.interval(5, SECONDS) 
        .takeUntil(conditionObs) 
        .subscribe(t -> dosomething()); 

conditionObs이 (다른 관측이다)이 점에 유의하시기 바랍니다 조건이 사실 일 때 뭔가를 내야합니다.

당신은 여기에 문서를 확인할 수 있습니다 http://reactivex.io/documentation/operators/takeuntil.html

+0

는 네, 바로 내 질문에 후가 작동하고 takeWhile왔다. TakeWhile은 관찰 할 필요가 없으며 나의 필요에 부합합니다. – angel