2016-07-01 16 views
0

Ich benutze Retrofit 2 mit rxjava und ich implementiert eine exponentielle Backoff mit der Wiederholung, wenn Funktion, aber wenn die Anfrage fehlschlägt, ich nicht erhalten ein Fehler im OnError-Callback, aber ich bekomme onCompleted sofort.Wie bekomme ich den Fehler im onError Callback, wenn ich exponentiell mit retryWenn

Wie kann ich den Fehler im OnError Callback erhalten?

Hier ist mein Code:

mRestApi.getObject(url) 
      .retryWhen(attempts -> attempts.zipWith(Observable.range(1, 3), (n, i) -> i) 
        .flatMap(i -> { 
         Log.d(TAG, "delay retry by " + i + " second(s)"); 
         return Observable.timer(i, TimeUnit.SECONDS); 
        })); 

Antwort

1

Sie könnten den doOnError Betreiber versuchen, z.B.

mRestApi.getObject(url) 
     .doOnError(e -> System.out.println(e.getMessage())) 
      .retryWhen(attempts -> attempts.zipWith(Observable.range(1, 3), (n, i) -> i) 
        .flatMap(i -> { 
         Log.d(TAG, "delay retry by " + i + " second(s)"); 
         return Observable.timer(i, TimeUnit.SECONDS); 
        })); 
+0

Aber ich möchte den Fehler an meinen Abonnenten senden –

+0

Fehler sind Terminal, sobald sie Ihren Abonnenten erreichen. Das ist der [Beobachtbare Vertrag] (http://reactivex.io/documentation/contract.html). – JohnWowUs

Verwandte Themen