2017-12-06 9 views
1

관찰 대상을 구독으로 다시 시도하고 싶습니다. 모든 것이 잘되었지만 지금은이 관찰을 다시 시도 할 때마다 몇 가지 코드를 실행하려고합니다. 어떤 제안?관찰 가능 항목을 방출하기 전에 코드를 실행할 수있는 방법이 있습니까? (재 시도 목적으로)

observableItem.retry(1).subscribeWith(subscriber); 
+0

질문을 자세히 설명해 주실 수 있습니까? 제목과 질문 둘 다 다른 것을 말합니다. – chandil03

+0

나는 observable에서 아무 것도 방출하기 전에 어떤 코드를 돌리고 싶다. 내 경우에는 내가 재 시도를 할 때 이것을 원했다 –

답변

0

대신 retryretryWhen 사용할 수 있습니다.

observableItem 
    .retryWhen(attempts -> { 
    return attemps.flatMap(error -> { 
     // TODO: Do what you want here... 

     // If you return an Observable with an `onNext` event => retry 
     // else if you return an Observable with an error => no retry 
     return Observable.just(new Object()); 
    }) 
    }) 
    .subscribeWith(subscriber); 
2

당신은 가입 할 때 관찰 (관찰이 항목을 방출하기 전에) 작동 doOnSubscribe 연산자가 필요합니다.

... 
observableItem 
     .doOnSubscribe(subscriber1 -> { 
      // Do whatever you want to de before retry. 
     }) 
     .retry(1) 
     .subscribeWith(subscriber) 
... 

참고 : 테스트하지 않았습니다. 그것을 시험하고 알려주세요.

희망이 있습니다.

+0

@ Sami-Ikhleaf가 도움이 되었습니까? – chandil03