2016-07-01 23 views
0

rxjavaでretrofit 2を使用していますが、リトライ機能を使用して指数関数的バックオフを実装しましたが、 onErrorコールバックのエラーですが、すぐにonCompletedを受け取ります。retryWhenを使用して指数関数的にバックオフした場合、onErrorコールのエラーを受け取る方法

onErrorコールバックでエラーを受け取るにはどうすればよいですか?ここで

は私のコードです:

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); 
        })); 

答えて

1

あなたは、例えばdoOnErrorオペレータを試みることができます

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

私の加入者にエラーを送信したい –

+0

エラーはあなたの加入者に届くとターミナルです。それは[Observable contract](http://reactivex.io/documentation/contract.html)です。 – JohnWowUs

関連する問題