2017-12-06 3 views
1

Ich möchte mit seinem Abonnement eine Observable wiederholen. Es lief alles gut, aber jetzt versuche ich jedes Mal Code auszuführen, wenn ich dieses Observable erneut versuche. irgendwelche Vorschläge?Gibt es eine Möglichkeit, Code auszuführen, bevor das Observable irgendein Element ausgibt? (für Wiederholungszwecke)

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

Können Sie Ihre Frage ausarbeiten? Titel und Frage sagen beide verschiedene Dinge. – chandil03

+0

Ich meine, ich möchte, dass ein Code ausgeführt wird, bevor etwas vom Observablen ausgesendet wird. in meinem Fall wollte ich, dass dies geschieht, wenn ich es erneut versuchen –

Antwort

0

können Sie retryWhen anstelle von retry.

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

Sie müssen doOnSubscribe Operator, der funktioniert, wenn beobachtbare gezeichnet wird (vor beobachtbaren beliebiges Element emittieren).

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

Hinweis: Ich habe es nicht getestet. Bitte teste es und lass es mich wissen.

Ich hoffe, es hilft.

+0

@ Sami-Ikhleaf hat es geholfen? – chandil03

Verwandte Themen