@@ -1271,6 +1271,29 @@ class Observable[+T](val asJava: rx.Observable[_ <: T])
1271
1271
Observable [U ](rx.Observable .merge(thisJava, thatJava))
1272
1272
}
1273
1273
1274
+ /**
1275
+ * This behaves like {@link #merge(Observable)} except that if any of the merged Observables
1276
+ * notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1277
+ * refrain from propagating that error notification until all of the merged Observables have
1278
+ * finished emitting items.
1279
+ * <p>
1280
+ * <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1281
+ * <p>
1282
+ * Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1283
+ * Observers once.
1284
+ * <p>
1285
+ * This method allows an Observer to receive all successfully emitted items from all of the
1286
+ * source Observables without being interrupted by an error notification from one of them.
1287
+ *
1288
+ * @param that
1289
+ * an Observable to be merged
1290
+ * @return an Observable that emits items that are the result of flattening the items emitted by
1291
+ * {$code this} and {$code that}
1292
+ */
1293
+ def mergeDelayError [U >: T ](that : Observable [U ]): Observable [U ] = {
1294
+ Observable [U ](rx.Observable .mergeDelayError[U ](this .asJava, that.asJava))
1295
+ }
1296
+
1274
1297
/**
1275
1298
* Flattens the sequence of Observables emitted by {@code this} into one Observable, without any
1276
1299
* transformation.
@@ -1291,6 +1314,31 @@ class Observable[+T](val asJava: rx.Observable[_ <: T])
1291
1314
Observable [U ](o5)
1292
1315
}
1293
1316
1317
+ /**
1318
+ * This behaves like {@link #flatten(<:<)} except that if any of the merged Observables
1319
+ * notify of an error via {@link Observer#onError onError}, this method will
1320
+ * refrain from propagating that error notification until all of the merged Observables have
1321
+ * finished emitting items.
1322
+ * <p>
1323
+ * <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1324
+ * <p>
1325
+ * Even if multiple merged Observables send {@code onError} notifications, this method will only invoke the {@code onError} method of its
1326
+ * Observers once.
1327
+ * <p>
1328
+ * This method allows an Observer to receive all successfully emitted items from all of the
1329
+ * source Observables without being interrupted by an error notification from one of them.
1330
+ *
1331
+ * @return an Observable that emits items that are the result of flattening the items emitted by
1332
+ * the Observables emitted by the this Observable
1333
+ */
1334
+ def flattenDelayError [U ](implicit evidence : Observable [T ] <:< Observable [Observable [U ]]): Observable [U ] = {
1335
+ val o2 : Observable [Observable [U ]] = this
1336
+ val o3 : Observable [rx.Observable [_ <: U ]] = o2.map(_.asJava)
1337
+ val o4 : rx.Observable [_ <: rx.Observable [_ <: U ]] = o3.asJava
1338
+ val o5 = rx.Observable .mergeDelayError[U ](o4)
1339
+ Observable [U ](o5)
1340
+ }
1341
+
1294
1342
/**
1295
1343
* Debounces by dropping all values that are followed by newer values before the timeout value expires. The timer resets on each `onNext` call.
1296
1344
* <p>
0 commit comments