<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國際加速解決方案。 廣告
                ## Merge 合并多個Observables的發射物 ![merge](https://box.kancloud.cn/e27f8579d69fa1fd8f8eb47003afb5c8_1494x748.png) 使用`Merge`操作符你可以將多個Observables的輸出合并,就好像它們是一個單個的Observable一樣。 `Merge`可能會讓合并的Observables發射的數據交錯(有一個類似的操作符`Concat`不會讓數據交錯,它會按順序一個接著一個發射多個Observables的發射物)。 正如圖例上展示的,任何一個原始Observable的`onError`通知會被立即傳遞給觀察者,而且會終止合并后的Observable。 ![mergeDelayError](https://box.kancloud.cn/a82292368c9aa1e3a85dd457bc100a43_1280x760.png) 在很多ReactiveX實現中還有一個叫`MergeDelayError`的操作符,它的行為有一點不同,它會保留`onError`通知直到合并后的Observable所有的數據發射完成,在那時它才會把`onError`傳遞給觀察者。 RxJava將它實現為`merge`, `mergeWith`和`mergeDelayError`。 ![merge](https://box.kancloud.cn/e92e0959388458c38f6631e4b3753e72_1280x760.png) 示例代碼 ```java Observable<Integer> odds = Observable.just(1, 3, 5).subscribeOn(someScheduler); Observable<Integer> evens = Observable.just(2, 4, 6); Observable.merge(odds, evens) .subscribe(new Subscriber<Integer>() { @Override public void onNext(Integer item) { System.out.println("Next: " + item); } @Override public void onError(Throwable error) { System.err.println("Error: " + error.getMessage()); } @Override public void onCompleted() { System.out.println("Sequence complete."); } }); ``` 輸出 ``` Next: 1 Next: 3 Next: 5 Next: 2 Next: 4 Next: 6 Sequence complete. ``` * Javadoc: [merge(Iterable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(java.lang.Iterable)) * Javadoc: [merge(Iterable,int)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(java.lang.Iterable,%20int)) * Javadoc: [merge(Observable[])](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(rx.Observable%5B%5D)) * Javadoc: [merge(Observable,Observable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(rx.Observable,%20rx.Observable)) (接受二到九個Observable) 除了傳遞多個Observable給`merge`,你還可以傳遞一個Observable列表`List`,數組,甚至是一個發射Observable序列的Observable,`merge`將合并它們的輸出作為單個Observable的輸出: ![merge](https://box.kancloud.cn/af188391c42e2444fd55cad9c597d8f8_1280x740.png) 如果你傳遞一個發射Observables序列的Observable,你可以指定`merge`應該同時訂閱的Observable'的最大數量。一旦達到訂閱數的限制,它將不再訂閱原始Observable發射的任何其它Observable,直到某個已經訂閱的Observable發射了`onCompleted`通知。 * Javadoc: [merge(Observable<Observable>)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(rx.Observable)) * Javadoc: [merge(Observable<Observable>,int)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#merge(rx.Observable,%20int)) `merge`是靜態方法,`mergeWith`是對象方法,舉個例子,`Observable.merge(odds,evens)`等價于`odds.mergeWith(evens)`。 如果傳遞給`merge`的任何一個的Observable發射了`onError`通知終止了,`merge`操作符生成的Observable也會立即以`onError`通知終止。如果你想讓它繼續發射數據,在最后才報告錯誤,可以使用`mergeDelayError`。 ![merge](https://box.kancloud.cn/d06608b8254c4aeaa9a790d058b18395_1280x760.png) `mergeDelayError` behaves much like `merge`. The exception is when one of the Observables being merged terminates with an onError notification. If this happens with merge, the merged Observable will immediately issue an `onError` notification and terminate. `mergeDelayError`, on the other hand, will hold off on reporting the error until it has given any other non-error-producing Observables that it is merging a chance to finish emitting their items, and it will emit those itself, and will only terminate with an `onError` notification when all of the other merged Observables have finished. Because it is possible that more than one of the merged Observables encountered an error, `mergeDelayError` may pass information about multiple errors in the onError notification (it will never invoke the observer’s `onError` method more than once). For this reason, if you want to know the nature of these errors, you should write your observers’ onError methods so that they accept a parameter of the class `CompositeException`. `mergeDelayError` has fewer variants. You cannot pass it an Iterable or Array of Observables, but you can pass it an Observable that emits Observables or between one and nine individual Observables as parameters. There is not an instance method version of `mergeDelayError` as there is for `merge`. * Javadoc: [mergeDelayError(Observable<Observable>)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#mergeDelayError(rx.Observable)) * Javadoc: [mergeDelayError(Observable,Observable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#mergeDelayError(rx.Observable,%20rx.Observable))
                  <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>

                              哎呀哎呀视频在线观看