2017-12-06 7 views
1

私はサブスクリプションで観測値を再試行したい。それはすべてうまくいったが、今私はこの観察可能性を再試行するたびにいくつかのコードを実行しようとしている。助言がありますか?は、observableがアイテムを放出する前にコードを実行する方法はありますか? (再試行の目的のために)

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

質問を詳しく説明できますか?タイトルと質問の両方が異なることを言います。 – chandil03

+0

私はobservableから何かを放射する前にいくつかのコードを実行したいと思っています。私の場合、私はそれを再試行するときにこれが起こることを望んだ –

答えて

0

あなたはretryWhenの代わり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

あなたが加入しているときに観察(観測可能で任意の項目を発する前に)働くdoOnSubscribeオペレータを必要としています。

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

注:私はそれをテストしていません。それを試して私に知らせてください。

希望します。

+0

@ Sami-Ikhleafはそれを助けましたか? – chandil03

関連する問題