RxKotlin implements this operator as merge
, mergeWith
, and mergeDelayError
.
Instead of passing multiple Observables (up to nine) into merge
, you could also pass in a List<>
(or other Iterable) of Observables, an Array of Observables, or even an Observable that emits Observables, and merge
will merge their output into the output of a single Observable:
If you pass in an Observable of Observables, you have the option of also passing in a value indicating to merge
the maximum number of those Observables it should attempt to be subscribed to simultaneously. Once it reaches this maximum subscription count, it will refrain from subscribing to any other Observables emitted by the source Observable until such time as one of the already-subscribed-to Observables issues an onCompleted
notification.
The instance version of merge
is mergeWith
, so, for example, instead of writing Observable.merge(odds,evens)
you could also write odds.mergeWith(evens)
.
If any of the individual Observables passed into merge
terminates with an onError
notification, the Observable produced by merge
itself will immediately terminate with an onError
notification. If you would prefer a merge that continues emitting the results of the remaining, error-free Observables before reporting the error, use mergeDelayError
instead.
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
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4