<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## Retry 如果原始Observable遇到錯誤,重新訂閱它期望它能正常終止 ![retry](https://box.kancloud.cn/c190d1d219849e32cf61242a4358fe8d_1280x630.png) `Retry`操作符不會將原始Observable的`onError`通知傳遞給觀察者,它會訂閱這個Observable,再給它一次機會無錯誤地完成它的數據序列。`Retry`總是傳遞`onNext`通知給觀察者,由于重新訂閱,可能會造成數據項重復,如上圖所示。 RxJava中的實現為`retry`和`retryWhen`。 無論收到多少次`onError`通知,無參數版本的`retry`都會繼續訂閱并發射原始Observable。 接受單個`count`參數的`retry`會最多重新訂閱指定的次數,如果次數超了,它不會嘗試再次訂閱,它會把最新的一個`onError`通知傳遞給它的觀察者。 還有一個版本的`retry`接受一個謂詞函數作為參數,這個函數的兩個參數是:重試次數和導致發射`onError`通知的`Throwable`。這個函數返回一個布爾值,如果返回`true`,`retry`應該再次訂閱和鏡像原始的Observable,如果返回`false`,`retry`會將最新的一個`onError`通知傳遞給它的觀察者。 `retry`操作符默認在`trampoline`調度器上執行。 * Javadoc: [retry()](http://reactivex.io/RxJava/javadoc/rx/Observable.html#retry()) * Javadoc: [retry(long)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#retry(long)) * Javadoc: [retry(Func2)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#retry(rx.functions.Func2)) ### retryWhen ![retryWhen](https://box.kancloud.cn/7b72a2797e5ce5b23d971a6dceb6b8cc_1280x860.png) `retryWhen`和`retry`類似,區別是,`retryWhen`將`onError`中的`Throwable`傳遞給一個函數,這個函數產生另一個Observable,`retryWhen`觀察它的結果再決定是不是要重新訂閱原始的Observable。如果這個Observable發射了一項數據,它就重新訂閱,如果這個Observable發射的是`onError`通知,它就將這個通知傳遞給觀察者然后終止。 `retryWhen`默認在`trampoline`調度器上執行,你可以通過參數指定其它的調度器。 示例代碼 ```java Observable.create((Subscriber<? super String> s) -> { System.out.println("subscribing"); s.onError(new RuntimeException("always fails")); }).retryWhen(attempts -> { return attempts.zipWith(Observable.range(1, 3), (n, i) -> i).flatMap(i -> { System.out.println("delay retry by " + i + " second(s)"); return Observable.timer(i, TimeUnit.SECONDS); }); }).toBlocking().forEach(System.out::println); ``` 輸出 ``` subscribing delay retry by 1 second(s) subscribing delay retry by 2 second(s) subscribing delay retry by 3 second(s) subscribing ``` * Javadoc: [retryWhen(Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#retryWhen(rx.functions.Func1)) * Javadoc: [retryWhen(Func1,Scheduler)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#retryWhen(rx.functions.Func1,%20rx.Scheduler))
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看