관찰 대상을 구독으로 다시 시도하고 싶습니다. 모든 것이 잘되었지만 지금은이 관찰을 다시 시도 할 때마다 몇 가지 코드를 실행하려고합니다. 어떤 제안?관찰 가능 항목을 방출하기 전에 코드를 실행할 수있는 방법이 있습니까? (재 시도 목적으로)
observableItem.retry(1).subscribeWith(subscriber);
관찰 대상을 구독으로 다시 시도하고 싶습니다. 모든 것이 잘되었지만 지금은이 관찰을 다시 시도 할 때마다 몇 가지 코드를 실행하려고합니다. 어떤 제안?관찰 가능 항목을 방출하기 전에 코드를 실행할 수있는 방법이 있습니까? (재 시도 목적으로)
observableItem.retry(1).subscribeWith(subscriber);
대신 retry
의 retryWhen
사용할 수 있습니다.
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);
당신은 가입 할 때 관찰 (관찰이 항목을 방출하기 전에) 작동 doOnSubscribe
연산자가 필요합니다.
...
observableItem
.doOnSubscribe(subscriber1 -> {
// Do whatever you want to de before retry.
})
.retry(1)
.subscribeWith(subscriber)
...
참고 : 테스트하지 않았습니다. 그것을 시험하고 알려주세요.
희망이 있습니다.
@ Sami-Ikhleaf가 도움이 되었습니까? – chandil03
질문을 자세히 설명해 주실 수 있습니까? 제목과 질문 둘 다 다른 것을 말합니다. – chandil03
나는 observable에서 아무 것도 방출하기 전에 어떤 코드를 돌리고 싶다. 내 경우에는 내가 재 시도를 할 때 이것을 원했다 –