@@ -2186,6 +2186,65 @@ public final static <T> Observable<T> mergeDelayError(Observable<? extends Obser
21862186 return source.lift(OperatorMerge.<T>instance(true, maxConcurrent));
21872187 }
21882188
2189+ /**
2190+ * Flattens an Iterable of Observables into one Observable, in a way that allows an Observer to receive all
2191+ * successfully emitted items from each of the source Observables without being interrupted by an error
2192+ * notification from one of them.
2193+ * <p>
2194+ * This behaves like {@link #merge(Observable)} except that if any of the merged Observables notify of an
2195+ * error via {@link Observer#onError onError}, {@code mergeDelayError} will refrain from propagating that
2196+ * error notification until all of the merged Observables have finished emitting items.
2197+ * <p>
2198+ * <img width="640" height="380" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/mergeDelayError.png" alt="">
2199+ * <p>
2200+ * Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only
2201+ * invoke the {@code onError} method of its Observers once.
2202+ * <dl>
2203+ * <dt><b>Scheduler:</b></dt>
2204+ * <dd>{@code mergeDelayError} does not operate by default on a particular {@link Scheduler}.</dd>
2205+ * </dl>
2206+ *
2207+ * @param sequences
2208+ * the Iterable of Observables
2209+ * @return an Observable that emits items that are the result of flattening the items emitted by the
2210+ * Observables in the Iterable
2211+ * @see <a href="http://reactivex.io/documentation/operators/merge.html">ReactiveX operators documentation: Merge</a>
2212+ */
2213+ public static <T> Observable<T> mergeDelayError(Iterable<? extends Observable<? extends T>> sequences) {
2214+ return mergeDelayError(from(sequences));
2215+ }
2216+
2217+ /**
2218+ * Flattens an Iterable of Observables into one Observable, in a way that allows an Observer to receive all
2219+ * successfully emitted items from each of the source Observables without being interrupted by an error
2220+ * notification from one of them, while limiting the number of concurrent subscriptions to these Observables.
2221+ * <p>
2222+ * This behaves like {@link #merge(Observable)} except that if any of the merged Observables notify of an
2223+ * error via {@link Observer#onError onError}, {@code mergeDelayError} will refrain from propagating that
2224+ * error notification until all of the merged Observables have finished emitting items.
2225+ * <p>
2226+ * <img width="640" height="380" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/mergeDelayError.png" alt="">
2227+ * <p>
2228+ * Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only
2229+ * invoke the {@code onError} method of its Observers once.
2230+ * <dl>
2231+ * <dt><b>Scheduler:</b></dt>
2232+ * <dd>{@code mergeDelayError} does not operate by default on a particular {@link Scheduler}.</dd>
2233+ * </dl>
2234+ *
2235+ * @param sequences
2236+ * the Iterable of Observables
2237+ * @param maxConcurrent
2238+ * the maximum number of Observables that may be subscribed to concurrently
2239+ * @return an Observable that emits items that are the result of flattening the items emitted by the
2240+ * Observables in the Iterable
2241+ * @see <a href="http://reactivex.io/documentation/operators/merge.html">ReactiveX operators documentation: Merge</a>
2242+ */
2243+ public static <T> Observable<T> mergeDelayError(Iterable<? extends Observable<? extends T>> sequences, int maxConcurrent) {
2244+ return mergeDelayError(from(sequences), maxConcurrent);
2245+ }
2246+
2247+
21892248 /**
21902249 * Flattens two Observables into one Observable, in a way that allows an Observer to receive all
21912250 * successfully emitted items from each of the source Observables without being interrupted by an error
0 commit comments