T
- the type of the items emitted by the Observable
public abstract class Observable<T> extends Object implements ObservableSource<T>
Observable
class is the non-backpressured, optionally multi-valued base reactive class that
offers factory methods, intermediate operators and the ability to consume synchronous
and/or asynchronous reactive dataflows.
Many operators in the class accept ObservableSource
(s), the base reactive interface
for such non-backpressured flows, which Observable
itself implements as well.
The Observable
's operators, by default, run with a buffer size of 128 elements (see Flowable.bufferSize()
),
that can be overridden globally via the system parameter rx3.buffer-size
. Most operators, however, have
overloads that allow setting their internal buffer size explicitly.
The documentation for this class makes use of marble diagrams. The following legend explains these diagrams:
The design of this class was derived from the
Reactive-Streams design and specification
by removing any backpressure-related infrastructure and implementation detail, replacing the
org.reactivestreams.Subscription
with Disposable
as the primary means to dispose of
a flow.
The Observable
follows the protocol
onSubscribe onNext* (onError | onComplete)?
where
the stream can be disposed through the Disposable
instance provided to consumers through
Observer.onSubscribe
.
Unlike the Observable
of version 1.x, subscribe(Observer)
does not allow external disposal
of a subscription and the Observer
instance is expected to expose such capability.
Example:
Disposable d = Observable.just("Hello world!")
.delay(1, TimeUnit.SECONDS)
.subscribeWith(new DisposableObserver<String>() {
@Override public void onStart() {
System.out.println("Start!");
}
@Override public void onNext(String t) {
System.out.println(t);
}
@Override public void onError(Throwable t) {
t.printStackTrace();
}
@Override public void onComplete() {
System.out.println("Done!");
}
});
Thread.sleep(500);
// the sequence can now be disposed via dispose()
d.dispose();
Flowable
,
DisposableObserver
Constructor and Description |
---|
Observable() |
Modifier and Type | Method and Description |
---|---|
@NonNull Single<Boolean> |
all(@NonNull Predicate<? super T> predicate)
|
static <T> @NonNull Observable<T> |
amb(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Mirrors the one
ObservableSource in an Iterable of several ObservableSource s that first either emits an item or sends
a termination notification. |
static <T> @NonNull Observable<T> |
ambArray(ObservableSource<? extends T>... sources)
Mirrors the one
ObservableSource in an array of several ObservableSource s that first either emits an item or sends
a termination notification. |
@NonNull Observable<T> |
ambWith(@NonNull ObservableSource<? extends T> other)
Mirrors the current
Observable or the other ObservableSource provided of which the first either emits an item or sends a termination
notification. |
@NonNull Single<Boolean> |
any(@NonNull Predicate<? super T> predicate)
Returns a
Single that emits true if any item emitted by the current Observable satisfies a
specified condition, otherwise false . |
T |
blockingFirst()
Returns the first item emitted by the current
Observable , or throws
NoSuchElementException if it emits no items. |
T |
blockingFirst(T defaultItem)
Returns the first item emitted by the current
Observable , or a default value if it emits no
items. |
void |
blockingForEach(@NonNull Consumer<? super T> onNext)
Consumes the current
Observable in a blocking fashion and invokes the given
Consumer with each upstream item on the current thread until the
upstream terminates. |
void |
blockingForEach(@NonNull Consumer<? super T> onNext,
int capacityHint)
Consumes the current
Observable in a blocking fashion and invokes the given
Consumer with each upstream item on the current thread until the
upstream terminates. |
@NonNull Iterable<T> |
blockingIterable()
Exposes the current
Observable as an Iterable which, when iterated,
subscribes to the current Observable and blocks
until the current Observable emits items or terminates. |
@NonNull Iterable<T> |
blockingIterable(int capacityHint)
Exposes the current
Observable as an Iterable which, when iterated,
subscribes to the current Observable and blocks
until the current Observable emits items or terminates. |
T |
blockingLast()
Returns the last item emitted by the current
Observable , or throws
NoSuchElementException if the current Observable emits no items. |
T |
blockingLast(T defaultItem)
Returns the last item emitted by the current
Observable , or a default value if it emits no
items. |
@NonNull Iterable<T> |
blockingLatest()
Returns an
Iterable that returns the latest item emitted by the current Observable ,
waiting if necessary for one to become available. |
@NonNull Iterable<T> |
blockingMostRecent(T initialItem)
Returns an
Iterable that always returns the item most recently emitted by the current
Observable . |
@NonNull Iterable<T> |
blockingNext()
Returns an
Iterable that blocks until the current Observable emits another item, then
returns that item. |
T |
blockingSingle()
If the current
Observable completes after emitting a single item, return that item, otherwise
throw a NoSuchElementException . |
T |
blockingSingle(T defaultItem)
If the current
Observable completes after emitting a single item, return that item; if it emits
more than one item, throw an IllegalArgumentException ; if it emits no items, return a default
value. |
@NonNull Stream<T> |
blockingStream()
Creates a sequential
Stream to consume or process the current Observable in a blocking manner via
the Java Stream API. |
@NonNull Stream<T> |
blockingStream(int capacityHint)
Creates a sequential
Stream to consume or process the current Observable in a blocking manner via
the Java Stream API. |
void |
blockingSubscribe()
Runs the current
Observable to a terminal event, ignoring any values and rethrowing any exception. |
void |
blockingSubscribe(@NonNull Consumer<? super T> onNext)
Subscribes to the source and calls the given callbacks on the current thread.
|
void |
blockingSubscribe(@NonNull Consumer<? super T> onNext,
@NonNull Consumer<? super Throwable> onError)
Subscribes to the source and calls the given callbacks on the current thread.
|
void |
blockingSubscribe(@NonNull Consumer<? super T> onNext,
@NonNull Consumer<? super Throwable> onError,
@NonNull Action onComplete)
Subscribes to the source and calls the given callbacks on the current thread.
|
void |
blockingSubscribe(@NonNull Observer<? super T> observer)
Subscribes to the source and calls the
Observer methods on the current thread. |
@NonNull Observable<List<T>> |
buffer(int count)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(int count,
int skip)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<U extends Collection<? super T>> |
buffer(int count,
int skip,
@NonNull Supplier<U> bufferSupplier)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<U extends Collection<? super T>> |
buffer(int count,
@NonNull Supplier<U> bufferSupplier)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
long timeskip,
@NonNull TimeUnit unit)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
long timeskip,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<U extends Collection<? super T>> |
buffer(long timespan,
long timeskip,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull Supplier<U> bufferSupplier)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
@NonNull TimeUnit unit)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
@NonNull TimeUnit unit,
int count)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
@NonNull Observable<List<T>> |
buffer(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
int count)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<U extends Collection<? super T>> |
buffer(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
int count,
@NonNull Supplier<U> bufferSupplier,
boolean restartTimerOnMaxSize)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<TOpening,TClosing> |
buffer(@NonNull ObservableSource<? extends TOpening> openingIndicator,
@NonNull Function<? super TOpening,? extends ObservableSource<? extends TClosing>> closingIndicator)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<TOpening,TClosing,U extends Collection<? super T>> |
buffer(@NonNull ObservableSource<? extends TOpening> openingIndicator,
@NonNull Function<? super TOpening,? extends ObservableSource<? extends TClosing>> closingIndicator,
@NonNull Supplier<U> bufferSupplier)
Returns an
Observable that emits buffers of items it collects from the current Observable . |
<B> @NonNull Observable<List<T>> |
buffer(@NonNull ObservableSource<B> boundaryIndicator)
Returns an
Observable that emits non-overlapping buffered items from the current Observable each time the
specified boundary ObservableSource emits an item. |
<B> @NonNull Observable<List<T>> |
buffer(@NonNull ObservableSource<B> boundaryIndicator,
int initialCapacity)
Returns an
Observable that emits non-overlapping buffered items from the current Observable each time the
specified boundary ObservableSource emits an item. |
<B,U extends Collection<? super T>> |
buffer(@NonNull ObservableSource<B> boundaryIndicator,
@NonNull Supplier<U> bufferSupplier)
Returns an
Observable that emits non-overlapping buffered items from the current Observable each time the
specified boundary ObservableSource emits an item. |
static int |
bufferSize()
Returns the default 'island' size or capacity-increment hint for unbounded buffers.
|
@NonNull Observable<T> |
cache()
Returns an
Observable that subscribes to the current Observable lazily, caches all of its events
and replays them, in the same order as received, to all the downstream observers. |
@NonNull Observable<T> |
cacheWithInitialCapacity(int initialCapacity)
Returns an
Observable that subscribes to the current Observable lazily, caches all of its events
and replays them, in the same order as received, to all the downstream observers. |
<U> @NonNull Observable<U> |
cast(@NonNull Class<U> clazz)
Returns an
Observable that emits the upstream items while
they can be cast via Class.cast(Object) until the upstream terminates,
or until the upstream signals an item which can't be cast,
resulting in a ClassCastException to be signaled to the downstream. |
<R,A> @NonNull Single<R> |
collect(@NonNull Collector<? super T,A,R> collector)
|
<U> @NonNull Single<U> |
collect(@NonNull Supplier<? extends U> initialItemSupplier,
@NonNull BiConsumer<? super U,? super T> collector)
Collects items emitted by the finite source
Observable into a single mutable data structure and returns
a Single that emits this structure. |
<U> @NonNull Single<U> |
collectInto(U initialItem,
@NonNull BiConsumer<? super U,? super T> collector)
Collects items emitted by the finite source
Observable into a single mutable data structure and returns
a Single that emits this structure. |
static <T,R> @NonNull Observable<R> |
combineLatest(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> combiner)
Combines a collection of source
ObservableSource s by emitting an item that aggregates the latest values of each of
the returned ObservableSource s each time an item is received from any of the returned ObservableSource s, where this
aggregation is defined by a specified function. |
static <T,R> @NonNull Observable<R> |
combineLatest(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> combiner,
int bufferSize)
Combines an
Iterable of source ObservableSource s by emitting an item that aggregates the latest values of each of
the returned ObservableSource s each time an item is received from any of the returned ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,R> @NonNull Observable<R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull BiFunction<? super T1,? super T2,? extends R> combiner)
Combines two source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from either of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull Function3<? super T1,? super T2,? super T3,? extends R> combiner)
Combines three source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> combiner)
Combines four source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,T5,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> combiner)
Combines five source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,T5,T6,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> combiner)
Combines six source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,T5,T6,T7,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> combiner)
Combines seven source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,T5,T6,T7,T8,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull ObservableSource<? extends T8> source8,
@NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> combiner)
Combines eight source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> |
combineLatest(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull ObservableSource<? extends T8> source8,
@NonNull ObservableSource<? extends T9> source9,
@NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> combiner)
Combines nine source
ObservableSource s by emitting an item that aggregates the latest values of each of the
ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T,R> @NonNull Observable<R> |
combineLatestArray(@NonNull ObservableSource<? extends T>[] sources,
@NonNull Function<? super Object[],? extends R> combiner)
Combines an array of source
ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the returned ObservableSource s, where this
aggregation is defined by a specified function. |
static <T,R> @NonNull Observable<R> |
combineLatestArray(@NonNull ObservableSource<? extends T>[] sources,
@NonNull Function<? super Object[],? extends R> combiner,
int bufferSize)
Combines an array of source
ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T,R> @NonNull Observable<R> |
combineLatestArrayDelayError(@NonNull ObservableSource<? extends T>[] sources,
@NonNull Function<? super Object[],? extends R> combiner)
Combines an array of
ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function. |
static <T,R> @NonNull Observable<R> |
combineLatestArrayDelayError(@NonNull ObservableSource<? extends T>[] sources,
@NonNull Function<? super Object[],? extends R> combiner,
int bufferSize)
Combines an array of
ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource s terminate. |
static <T,R> @NonNull Observable<R> |
combineLatestDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> combiner)
Combines an
Iterable of ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource s terminate. |
static <T,R> @NonNull Observable<R> |
combineLatestDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> combiner,
int bufferSize)
Combines an
Iterable of ObservableSource s by emitting an item that aggregates the latest values of each of
the ObservableSource s each time an item is received from any of the ObservableSource s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource s terminate. |
<R> @NonNull Observable<R> |
compose(@NonNull ObservableTransformer<? super T,? extends R> composer)
Transform the current
Observable by applying a particular ObservableTransformer function to it. |
static <T> @NonNull Observable<T> |
concat(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Concatenates elements of each
ObservableSource provided via an Iterable sequence into a single sequence
of elements without interleaving them. |
static <T> @NonNull Observable<T> |
concat(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Returns an
Observable that emits the items emitted by each of the ObservableSource s emitted by the
ObservableSource , one after the other, without interleaving them. |
static <T> @NonNull Observable<T> |
concat(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int bufferSize)
Returns an
Observable that emits the items emitted by each of the ObservableSource s emitted by the outer
ObservableSource , one after the other, without interleaving them. |
static <T> @NonNull Observable<T> |
concat(@NonNull ObservableSource<? extends T> source1,
ObservableSource<? extends T> source2)
Returns an
Observable that emits the items emitted by two ObservableSource s, one after the other, without
interleaving them. |
static <T> @NonNull Observable<T> |
concat(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3)
Returns an
Observable that emits the items emitted by three ObservableSource s, one after the other, without
interleaving them. |
static <T> @NonNull Observable<T> |
concat(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3,
@NonNull ObservableSource<? extends T> source4)
Returns an
Observable that emits the items emitted by four ObservableSource s, one after the other, without
interleaving them. |
static <T> @NonNull Observable<T> |
concatArray(ObservableSource<? extends T>... sources)
Concatenates a variable number of
ObservableSource sources. |
static <T> @NonNull Observable<T> |
concatArrayDelayError(ObservableSource<? extends T>... sources)
Concatenates a variable number of
ObservableSource sources and delays errors from any of them
till all terminate. |
static <T> @NonNull Observable<T> |
concatArrayEager(int maxConcurrency,
int bufferSize,
ObservableSource<? extends T>... sources)
Concatenates an array of
ObservableSource s eagerly into a single stream of values. |
static <T> @NonNull Observable<T> |
concatArrayEager(ObservableSource<? extends T>... sources)
Concatenates an array of
ObservableSource s eagerly into a single stream of values. |
static <T> @NonNull Observable<T> |
concatArrayEagerDelayError(int maxConcurrency,
int bufferSize,
ObservableSource<? extends T>... sources)
Concatenates an array of
ObservableSource s eagerly into a single stream of values
and delaying any errors until all sources terminate. |
static <T> @NonNull Observable<T> |
concatArrayEagerDelayError(ObservableSource<? extends T>... sources)
Concatenates an array of
ObservableSource s eagerly into a single stream of values
and delaying any errors until all sources terminate. |
static <T> @NonNull Observable<T> |
concatDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Concatenates the
Iterable sequence of ObservableSource s into a single Observable sequence
by subscribing to each ObservableSource , one after the other, one at a time and delays any errors till
the all inner ObservableSource s terminate. |
static <T> @NonNull Observable<T> |
concatDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Concatenates the
ObservableSource sequence of ObservableSource s into a single Observable sequence
by subscribing to each inner ObservableSource , one after the other, one at a time and delays any errors till the
all inner and the outer ObservableSource s terminate. |
static <T> @NonNull Observable<T> |
concatDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int bufferSize,
boolean tillTheEnd)
Concatenates the
ObservableSource sequence of ObservableSource s into a single sequence by subscribing to each inner ObservableSource ,
one after the other, one at a time and delays any errors till the all inner and the outer ObservableSource s terminate. |
static <T> @NonNull Observable<T> |
concatEager(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Concatenates a sequence of
ObservableSource s eagerly into a single stream of values. |
static <T> @NonNull Observable<T> |
concatEager(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Concatenates a sequence of
ObservableSource s eagerly into a single stream of values and
runs a limited number of inner sequences at once. |
static <T> @NonNull Observable<T> |
concatEager(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Concatenates an
ObservableSource sequence of ObservableSource s eagerly into a single stream of values. |
static <T> @NonNull Observable<T> |
concatEager(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Concatenates an
ObservableSource sequence of ObservableSource s eagerly into a single stream of values
and runs a limited number of inner sequences at once. |
static <T> @NonNull Observable<T> |
concatEagerDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Concatenates a sequence of
ObservableSource s eagerly into a single stream of values,
delaying errors until all the inner sequences terminate. |
static <T> @NonNull Observable<T> |
concatEagerDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Concatenates a sequence of
ObservableSource s eagerly into a single stream of values,
delaying errors until all the inner sequences terminate and runs a limited number of inner
sequences at once. |
static <T> @NonNull Observable<T> |
concatEagerDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Concatenates an
ObservableSource sequence of ObservableSource s eagerly into a single stream of values,
delaying errors until all the inner and the outer sequence terminate. |
static <T> @NonNull Observable<T> |
concatEagerDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Concatenates an
ObservableSource sequence of ObservableSource s eagerly into a single stream of values,
delaying errors until all the inner and the outer sequence terminate and runs a limited number of inner sequences at once. |
<R> @NonNull Observable<R> |
concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Returns a new
Observable that emits items resulting from applying a function that you supply to each item
emitted by the current Observable , where that function returns an ObservableSource , and then emitting the items
that result from concatenating those returned ObservableSource s. |
<R> @NonNull Observable<R> |
concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int bufferSize)
Returns a new
Observable that emits items resulting from applying a function that you supply to each item
emitted by the current Observable , where that function returns an ObservableSource , and then emitting the items
that result from concatenating those returned ObservableSource s. |
<R> @NonNull Observable<R> |
concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int bufferSize,
@NonNull Scheduler scheduler)
Returns a new
Observable that emits items resulting from applying a function that you supply to each item
emitted by the current Observable , where that function returns an ObservableSource , and then emitting the items
that result from concatenating those returned ObservableSource s. |
@NonNull Completable |
concatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Maps each element of the current
Observable into CompletableSource s, subscribes to them one at a time in
order and waits until the upstream and all CompletableSource s complete. |
@NonNull Completable |
concatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper,
int capacityHint)
Maps each element of the current
Observable into CompletableSource s, subscribes to them one at a time in
order and waits until the upstream and all CompletableSource s complete. |
@NonNull Completable |
concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper)
Maps the upstream items into
CompletableSource s and subscribes to them one after the
other terminates, delaying all errors till both the current Observable and all
inner CompletableSource s terminate. |
@NonNull Completable |
concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper,
boolean tillTheEnd)
Maps the upstream items into
CompletableSource s and subscribes to them one after the
other terminates, optionally delaying all errors till both the current Observable and all
inner CompletableSource s terminate. |
@NonNull Completable |
concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper,
boolean tillTheEnd,
int bufferSize)
Maps the upstream items into
CompletableSource s and subscribes to them one after the
other terminates, optionally delaying all errors till both the current Observable and all
inner CompletableSource s terminate. |
<R> @NonNull Observable<R> |
concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Maps each of the items into an
ObservableSource , subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource s
till all of them terminate. |
<R> @NonNull Observable<R> |
concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean tillTheEnd,
int bufferSize)
Maps each of the items into an
ObservableSource , subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource s
till all of them terminate. |
<R> @NonNull Observable<R> |
concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean tillTheEnd,
int bufferSize,
@NonNull Scheduler scheduler)
Maps each of the items into an
ObservableSource , subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource s
till all of them terminate. |
<R> @NonNull Observable<R> |
concatMapEager(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Maps a sequence of values into
ObservableSource s and concatenates these ObservableSource s eagerly into a single
Observable sequence. |
<R> @NonNull Observable<R> |
concatMapEager(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int maxConcurrency,
int bufferSize)
Maps a sequence of values into
ObservableSource s and concatenates these ObservableSource s eagerly into a single
Observable sequence. |
<R> @NonNull Observable<R> |
concatMapEagerDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean tillTheEnd)
Maps a sequence of values into
ObservableSource s and concatenates these ObservableSource s eagerly into a single
Observable sequence. |
<R> @NonNull Observable<R> |
concatMapEagerDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean tillTheEnd,
int maxConcurrency,
int bufferSize)
Maps a sequence of values into
ObservableSource s and concatenates these ObservableSource s eagerly into a single
Observable sequence. |
<U> @NonNull Observable<U> |
concatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Returns an
Observable that concatenate each item emitted by the current Observable with the values in an
Iterable corresponding to that item that is generated by a selector. |
<R> @NonNull Observable<R> |
concatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Maps the upstream items into
MaybeSource s and subscribes to them one after the
other succeeds or completes, emits their success value if available or terminates immediately if
either the current Observable or the current inner MaybeSource fail. |
<R> @NonNull Observable<R> |
concatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper,
int bufferSize)
Maps the upstream items into
MaybeSource s and subscribes to them one after the
other succeeds or completes, emits their success value if available or terminates immediately if
either the current Observable or the current inner MaybeSource fail. |
<R> @NonNull Observable<R> |
concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Maps the upstream items into
MaybeSource s and subscribes to them one after the
other terminates, emits their success value if available and delaying all errors
till both the current Observable and all inner MaybeSource s terminate. |
<R> @NonNull Observable<R> |
concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper,
boolean tillTheEnd)
Maps the upstream items into
MaybeSource s and subscribes to them one after the
other terminates, emits their success value if available and optionally delaying all errors
till both the current Observable and all inner MaybeSource s terminate. |
<R> @NonNull Observable<R> |
concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper,
boolean tillTheEnd,
int bufferSize)
Maps the upstream items into
MaybeSource s and subscribes to them one after the
other terminates, emits their success value if available and optionally delaying all errors
till both the current Observable and all inner MaybeSource s terminate. |
<R> @NonNull Observable<R> |
concatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Maps the upstream items into
SingleSource s and subscribes to them one after the
other succeeds, emits their success values or terminates immediately if
either the current Observable or the current inner SingleSource fail. |
<R> @NonNull Observable<R> |
concatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper,
int bufferSize)
Maps the upstream items into
SingleSource s and subscribes to them one after the
other succeeds, emits their success values or terminates immediately if
either the current Observable or the current inner SingleSource fail. |
<R> @NonNull Observable<R> |
concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Maps the upstream items into
SingleSource s and subscribes to them one after the
other succeeds or fails, emits their success values and delays all errors
till both the current Observable and all inner SingleSource s terminate. |
<R> @NonNull Observable<R> |
concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper,
boolean tillTheEnd)
Maps the upstream items into
SingleSource s and subscribes to them one after the
other succeeds or fails, emits their success values and optionally delays all errors
till both the current Observable and all inner SingleSource s terminate. |
<R> @NonNull Observable<R> |
concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper,
boolean tillTheEnd,
int bufferSize)
Maps the upstream items into
SingleSource s and subscribes to them one after the
other succeeds or fails, emits their success values and optionally delays errors
till both the current Observable and all inner SingleSource s terminate. |
<R> @NonNull Observable<R> |
concatMapStream(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Maps each upstream item into a
Stream and emits the Stream 's items to the downstream in a sequential fashion. |
@NonNull Observable<T> |
concatWith(@NonNull CompletableSource other)
Returns an
Observable that emits items from the current Observable and when it completes normally, the
other CompletableSource is subscribed to and the returned Observable emits its terminal events. |
@NonNull Observable<T> |
concatWith(@NonNull MaybeSource<? extends T> other)
Returns an
Observable that emits the items from the current Observable followed by the success item or terminal events
of the other MaybeSource . |
@NonNull Observable<T> |
concatWith(@NonNull ObservableSource<? extends T> other)
Returns an
Observable that first emits the items emitted from the current Observable , then items
from the other ObservableSource without interleaving them. |
@NonNull Observable<T> |
concatWith(@NonNull SingleSource<? extends T> other)
Returns an
Observable that emits the items from the current Observable followed by the success item or error event
of the other SingleSource . |
@NonNull Single<Boolean> |
contains(@NonNull Object item)
|
@NonNull Single<Long> |
count()
|
static <T> @NonNull Observable<T> |
create(@NonNull ObservableOnSubscribe<T> source)
Provides an API (via a cold
Observable ) that bridges the reactive world with the callback-style world. |
<U> @NonNull Observable<T> |
debounce(@NonNull Function<? super T,? extends ObservableSource<U>> debounceIndicator)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by another item within a computed debounce duration
denoted by an item emission or completion from a generated inner ObservableSource for that original item. |
@NonNull Observable<T> |
debounce(long timeout,
@NonNull TimeUnit unit)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires. |
@NonNull Observable<T> |
debounce(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires on a specified
Scheduler . |
@NonNull Observable<T> |
debounce(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull Consumer<? super T> onDropped)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires on a specified
Scheduler . |
@NonNull Observable<T> |
defaultIfEmpty(T defaultItem)
Returns an
Observable that emits the items emitted by the current Observable or a specified default item
if the current Observable is empty. |
static <T> @NonNull Observable<T> |
defer(@NonNull Supplier<? extends ObservableSource<? extends T>> supplier)
Returns an
Observable that calls an ObservableSource factory to create an ObservableSource for each new Observer
that subscribes. |
<U> @NonNull Observable<T> |
delay(@NonNull Function<? super T,? extends ObservableSource<U>> itemDelayIndicator)
Returns an
Observable that delays the emissions of the current Observable via
a per-item derived ObservableSource 's item emission or termination, on a per source item basis. |
@NonNull Observable<T> |
delay(long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits the items emitted by the current Observable shifted forward in time by a
specified delay. |
@NonNull Observable<T> |
delay(long time,
@NonNull TimeUnit unit,
boolean delayError)
Returns an
Observable that emits the items emitted by the current Observable shifted forward in time by a
specified delay. |
@NonNull Observable<T> |
delay(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits the items emitted by the current Observable shifted forward in time by a
specified delay. |
@NonNull Observable<T> |
delay(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError)
Returns an
Observable that emits the items emitted by the current Observable shifted forward in time by a
specified delay. |
<U,V> @NonNull Observable<T> |
delay(@NonNull ObservableSource<U> subscriptionIndicator,
@NonNull Function<? super T,? extends ObservableSource<V>> itemDelayIndicator)
Returns an
Observable that delays the subscription to and emissions from the current Observable via
ObservableSource s for the subscription itself and on a per-item basis. |
@NonNull Observable<T> |
delaySubscription(long time,
@NonNull TimeUnit unit)
Returns an
Observable that delays the subscription to the current Observable by a given amount of time. |
@NonNull Observable<T> |
delaySubscription(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that delays the subscription to the current Observable by a given amount of time,
both waiting and subscribing on a given Scheduler . |
<U> @NonNull Observable<T> |
delaySubscription(@NonNull ObservableSource<U> subscriptionIndicator)
Returns an
Observable that delays the subscription to the current Observable
until the other ObservableSource emits an element or completes normally. |
<R> @NonNull Observable<R> |
dematerialize(@NonNull Function<? super T,Notification<R>> selector)
Returns an
Observable that reverses the effect of materialize by transforming the
Notification objects extracted from the source items via a selector function
into their respective Observer signal types. |
@NonNull Observable<T> |
distinct()
Returns an
Observable that emits all items emitted by the current Observable that are distinct
based on Object.equals(Object) comparison. |
<K> @NonNull Observable<T> |
distinct(@NonNull Function<? super T,K> keySelector)
Returns an
Observable that emits all items emitted by the current Observable that are distinct according
to a key selector function and based on Object.equals(Object) comparison of the objects
returned by the key selector function. |
<K> @NonNull Observable<T> |
distinct(@NonNull Function<? super T,K> keySelector,
@NonNull Supplier<? extends Collection<? super K>> collectionSupplier)
Returns an
Observable that emits all items emitted by the current Observable that are distinct according
to a key selector function and based on Object.equals(Object) comparison of the objects
returned by the key selector function. |
@NonNull Observable<T> |
distinctUntilChanged()
Returns an
Observable that emits all items emitted by the current Observable that are distinct from their
immediate predecessors based on Object.equals(Object) comparison. |
@NonNull Observable<T> |
distinctUntilChanged(@NonNull BiPredicate<? super T,? super T> comparer)
Returns an
Observable that emits all items emitted by the current Observable that are distinct from their
immediate predecessors when compared with each other via the provided comparator function. |
<K> @NonNull Observable<T> |
distinctUntilChanged(@NonNull Function<? super T,K> keySelector)
Returns an
Observable that emits all items emitted by the current Observable that are distinct from their
immediate predecessors, according to a key selector function and based on Object.equals(Object) comparison
of those objects returned by the key selector function. |
@NonNull Observable<T> |
doAfterNext(@NonNull Consumer<? super T> onAfterNext)
Calls the specified
Consumer with the current item after this item has been emitted to the downstream. |
@NonNull Observable<T> |
doAfterTerminate(@NonNull Action onAfterTerminate)
|
@NonNull Observable<T> |
doFinally(@NonNull Action onFinally)
Calls the specified action after the current
Observable signals onError or onCompleted or gets disposed by
the downstream. |
@NonNull Observable<T> |
doOnComplete(@NonNull Action onComplete)
|
@NonNull Observable<T> |
doOnDispose(@NonNull Action onDispose)
Calls the given shared
Action if the downstream disposes the sequence. |
@NonNull Observable<T> |
doOnEach(@NonNull Consumer<? super Notification<T>> onNotification)
Returns an
Observable that invokes a Consumer with the appropriate Notification
object when the current Observable signals an item or terminates. |
@NonNull Observable<T> |
doOnEach(@NonNull Observer<? super T> observer)
Returns an
Observable that forwards the items and terminal events of the current
Observable to its Observer s and to the given shared Observer instance. |
@NonNull Observable<T> |
doOnError(@NonNull Consumer<? super Throwable> onError)
|
@NonNull Observable<T> |
doOnLifecycle(@NonNull Consumer<? super Disposable> onSubscribe,
@NonNull Action onDispose)
Calls the appropriate
onXXX method (shared between all Observer s) for the lifecycle events of
the sequence (subscription, disposal). |
@NonNull Observable<T> |
doOnNext(@NonNull Consumer<? super T> onNext)
Calls the given
Consumer with the value emitted by the current Observable before forwarding it to the downstream. |
@NonNull Observable<T> |
doOnSubscribe(@NonNull Consumer<? super Disposable> onSubscribe)
|
@NonNull Observable<T> |
doOnTerminate(@NonNull Action onTerminate)
Returns an
Observable so that it invokes an action when the current Observable calls onComplete or
onError . |
@NonNull Maybe<T> |
elementAt(long index)
Returns a
Maybe that emits the single item at a specified index in a sequence of emissions from
the current Observable or completes if the current Observable signals fewer elements than index. |
@NonNull Single<T> |
elementAt(long index,
T defaultItem)
Returns a
Single that emits the item found at a specified index in a sequence of emissions from
the current Observable , or a default item if that index is out of range. |
@NonNull Single<T> |
elementAtOrError(long index)
Returns a
Single that emits the item found at a specified index in a sequence of emissions from the current Observable
or signals a NoSuchElementException if the current Observable signals fewer elements than index. |
static <T> @NonNull Observable<T> |
empty()
Returns an
Observable that emits no items to the Observer and immediately invokes its
onComplete method. |
static <T> @NonNull Observable<T> |
error(@NonNull Supplier<? extends Throwable> supplier)
|
static <T> @NonNull Observable<T> |
error(@NonNull Throwable throwable)
|
@NonNull Observable<T> |
filter(@NonNull Predicate<? super T> predicate)
Filters items emitted by the current
Observable by only emitting those that satisfy a specified Predicate . |
@NonNull Single<T> |
first(T defaultItem)
Returns a
Single that emits only the very first item emitted by the current Observable , or a default item
if the current Observable completes without emitting any items. |
@NonNull Maybe<T> |
firstElement()
Returns a
Maybe that emits only the very first item emitted by the current Observable , or
completes if the current Observable is empty. |
@NonNull Single<T> |
firstOrError()
Returns a
Single that emits only the very first item emitted by the current Observable or
signals a NoSuchElementException if the current Observable is empty. |
@NonNull CompletionStage<T> |
firstOrErrorStage()
Signals the first upstream item or a
NoSuchElementException if the upstream is empty via
a CompletionStage . |
@NonNull CompletionStage<T> |
firstStage(T defaultItem)
Signals the first upstream item (or the default item if the upstream is empty) via
a
CompletionStage . |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Returns an
Observable that emits items based on applying a function that you supply to each item emitted
by the current Observable , where that function returns an ObservableSource , and then merging those returned
ObservableSource s and emitting the results of this merger. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean delayErrors)
Returns an
Observable that emits items based on applying a function that you supply to each item emitted
by the current Observable , where that function returns an ObservableSource , and then merging those returned
ObservableSource s and emitting the results of this merger. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean delayErrors,
int maxConcurrency)
Returns an
Observable that emits items based on applying a function that you supply to each item emitted
by the current Observable , where that function returns an ObservableSource , and then merging those returned
ObservableSource s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
boolean delayErrors,
int maxConcurrency,
int bufferSize)
Returns an
Observable that emits items based on applying a function that you supply to each item emitted
by the current Observable , where that function returns an ObservableSource , and then merging those returned
ObservableSource s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> onNextMapper,
@NonNull Function<? super Throwable,? extends ObservableSource<? extends R>> onErrorMapper,
@NonNull Supplier<? extends ObservableSource<? extends R>> onCompleteSupplier)
Returns an
Observable that applies a function to each item emitted or notification raised by the current
Observable and then flattens the ObservableSource s returned from these functions and emits the resulting items. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> onNextMapper,
@NonNull Function<Throwable,? extends ObservableSource<? extends R>> onErrorMapper,
@NonNull Supplier<? extends ObservableSource<? extends R>> onCompleteSupplier,
int maxConcurrency)
Returns an
Observable that applies a function to each item emitted or notification raised by the current
Observable and then flattens the ObservableSource s returned from these functions and emits the resulting items,
while limiting the maximum number of concurrent subscriptions to these ObservableSource s. |
<R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int maxConcurrency)
Returns an
Observable that emits items based on applying a function that you supply to each item emitted
by the current Observable , where that function returns an ObservableSource , and then merging those returned
ObservableSource s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
<U,R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> combiner)
Returns an
Observable that emits the results of a specified function to the pair of values emitted by the
current Observable and the mapped inner ObservableSource . |
<U,R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> combiner,
boolean delayErrors)
Returns an
Observable that emits the results of a specified function to the pair of values emitted by the
current Observable and the mapped inner ObservableSource . |
<U,R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> combiner,
boolean delayErrors,
int maxConcurrency)
Returns an
Observable that emits the results of a specified function to the pair of values emitted by the
current Observable and the mapped inner ObservableSource , while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
<U,R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> combiner,
boolean delayErrors,
int maxConcurrency,
int bufferSize)
Returns an
Observable that emits the results of a specified function to the pair of values emitted by the
current Observable and the mapped inner ObservableSource , while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
<U,R> @NonNull Observable<R> |
flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> combiner,
int maxConcurrency)
Returns an
Observable that emits the results of a specified function to the pair of values emitted by the
current Observable and the mapped inner ObservableSource , while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
@NonNull Completable |
flatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Maps each element of the current
Observable into CompletableSource s, subscribes to them and
waits until the upstream and all CompletableSource s complete. |
@NonNull Completable |
flatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper,
boolean delayErrors)
Maps each element of the current
Observable into CompletableSource s, subscribes to them and
waits until the upstream and all CompletableSource s complete, optionally delaying all errors. |
<U> @NonNull Observable<U> |
flatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
|
<U,V> @NonNull Observable<V> |
flatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends V> combiner)
Merges
Iterable s generated by a mapper Function for each individual item emitted by
the current Observable into a single Observable sequence where the resulting items will
be the combination of the original item and each inner item of the respective Iterable as returned
by the resultSelector BiFunction . |
<R> @NonNull Observable<R> |
flatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Maps each element of the current
Observable into MaybeSource s, subscribes to all of them
and merges their onSuccess values, in no particular order, into a single Observable sequence. |
<R> @NonNull Observable<R> |
flatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper,
boolean delayErrors)
Maps each element of the current
Observable into MaybeSource s, subscribes to them
and merges their onSuccess values, in no particular order, into a single Observable sequence,
optionally delaying all errors. |
<R> @NonNull Observable<R> |
flatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Maps each element of the current
Observable into SingleSource s, subscribes to all of them
and merges their onSuccess values, in no particular order, into a single Observable sequence. |
<R> @NonNull Observable<R> |
flatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper,
boolean delayErrors)
Maps each element of the current
Observable into SingleSource s, subscribes to them
and merges their onSuccess values, in no particular order, into a single Observable sequence,
optionally delaying all errors. |
<R> @NonNull Observable<R> |
flatMapStream(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Maps each upstream item into a
Stream and emits the Stream 's items to the downstream in a sequential fashion. |
@NonNull Disposable |
forEach(@NonNull Consumer<? super T> onNext)
Subscribes to the
ObservableSource and calls a Consumer for each item of the current Observable
on its emission thread. |
@NonNull Disposable |
forEachWhile(@NonNull Predicate<? super T> onNext)
Subscribes to the
ObservableSource and calls a Predicate for each item of the current Observable ,
on its emission thread, until the predicate returns false . |
@NonNull Disposable |
forEachWhile(@NonNull Predicate<? super T> onNext,
@NonNull Consumer<? super Throwable> onError)
Subscribes to the
ObservableSource and calls a Predicate for each item or a Consumer with the error
of the current Observable , on their original emission threads, until the predicate returns false . |
@NonNull Disposable |
forEachWhile(@NonNull Predicate<? super T> onNext,
@NonNull Consumer<? super Throwable> onError,
@NonNull Action onComplete)
Subscribes to the
ObservableSource and calls a Predicate for each item, a Consumer with the error
or an Action upon completion of the current Observable , on their original emission threads,
until the predicate returns false . |
static <T> @NonNull Observable<T> |
fromAction(@NonNull Action action)
|
static <T> @NonNull Observable<T> |
fromArray(T... items)
Converts an array into an
ObservableSource that emits the items in the array. |
static <T> @NonNull Observable<T> |
fromCallable(@NonNull Callable<? extends T> callable)
Returns an
Observable that, when an observer subscribes to it, invokes a function you specify and then
emits the value returned from that function. |
static <T> @NonNull Observable<T> |
fromCompletable(@NonNull CompletableSource completableSource)
Wraps a
CompletableSource into an Observable . |
static <T> @NonNull Observable<T> |
fromCompletionStage(@NonNull CompletionStage<T> stage)
Signals the completion value or error of the given (hot)
CompletionStage -based asynchronous calculation. |
static <T> @NonNull Observable<T> |
fromFuture(@NonNull Future<? extends T> future)
Converts a
Future into an Observable . |
static <T> @NonNull Observable<T> |
fromFuture(@NonNull Future<? extends T> future,
long timeout,
@NonNull TimeUnit unit)
|
static <T> @NonNull Observable<T> |
fromIterable(@NonNull Iterable<? extends T> source)
Converts an
Iterable sequence into an Observable that emits the items in the sequence. |
static <T> @NonNull Observable<T> |
fromMaybe(@NonNull MaybeSource<T> maybe)
Returns an
Observable instance that when subscribed to, subscribes to the MaybeSource instance and
emits onSuccess as a single item or forwards any onComplete or
onError signal. |
static <T> @NonNull Observable<T> |
fromOptional(@NonNull Optional<T> optional)
Converts the existing value of the provided optional into a
just(Object)
or an empty optional into an empty() Observable instance. |
static <T> @NonNull Observable<T> |
fromPublisher(@NonNull Publisher<? extends T> publisher)
Converts an arbitrary Reactive Streams
Publisher into an Observable . |
static <T> @NonNull Observable<T> |
fromRunnable(@NonNull Runnable run)
|
static <T> @NonNull Observable<T> |
fromSingle(@NonNull SingleSource<T> source)
Returns an
Observable instance that when subscribed to, subscribes to the SingleSource instance and
emits onSuccess as a single item or forwards the onError signal. |
static <T> @NonNull Observable<T> |
fromStream(@NonNull Stream<T> stream)
Converts a
Stream into a finite Observable and emits its items in the sequence. |
static <T> @NonNull Observable<T> |
fromSupplier(@NonNull Supplier<? extends T> supplier)
Returns an
Observable that, when an observer subscribes to it, invokes a supplier function you specify and then
emits the value returned from that function. |
static <T> @NonNull Observable<T> |
generate(@NonNull Consumer<Emitter<T>> generator)
Returns a cold, synchronous and stateless generator of values.
|
static <T,S> @NonNull Observable<T> |
generate(@NonNull Supplier<S> initialState,
@NonNull BiConsumer<S,Emitter<T>> generator)
Returns a cold, synchronous and stateful generator of values.
|
static <T,S> @NonNull Observable<T> |
generate(@NonNull Supplier<S> initialState,
@NonNull BiConsumer<S,Emitter<T>> generator,
@NonNull Consumer<? super S> disposeState)
Returns a cold, synchronous and stateful generator of values.
|
static <T,S> @NonNull Observable<T> |
generate(@NonNull Supplier<S> initialState,
@NonNull BiFunction<S,Emitter<T>,S> generator)
Returns a cold, synchronous and stateful generator of values.
|
static <T,S> @NonNull Observable<T> |
generate(@NonNull Supplier<S> initialState,
@NonNull BiFunction<S,Emitter<T>,S> generator,
@NonNull Consumer<? super S> disposeState)
Returns a cold, synchronous and stateful generator of values.
|
<K> @NonNull Observable<GroupedObservable<K,T>> |
groupBy(@NonNull Function<? super T,? extends K> keySelector)
Groups the items emitted by the current
Observable according to a specified criterion, and emits these
grouped items as GroupedObservable s. |
<K> @NonNull Observable<GroupedObservable<K,T>> |
groupBy(@NonNull Function<? super T,? extends K> keySelector,
boolean delayError)
Groups the items emitted by the current
Observable according to a specified criterion, and emits these
grouped items as GroupedObservable s. |
<K,V> @NonNull Observable<GroupedObservable<K,V>> |
groupBy(@NonNull Function<? super T,? extends K> keySelector,
Function<? super T,? extends V> valueSelector)
Groups the items emitted by the current
Observable according to a specified criterion, and emits these
grouped items as GroupedObservable s. |
<K,V> @NonNull Observable<GroupedObservable<K,V>> |
groupBy(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector,
boolean delayError)
Groups the items emitted by the current
Observable according to a specified criterion, and emits these
grouped items as GroupedObservable s. |
<K,V> @NonNull Observable<GroupedObservable<K,V>> |
groupBy(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector,
boolean delayError,
int bufferSize)
Groups the items emitted by the current
Observable according to a specified criterion, and emits these
grouped items as GroupedObservable s. |
<TRight,TLeftEnd,TRightEnd,R> |
groupJoin(@NonNull ObservableSource<? extends TRight> other,
@NonNull Function<? super T,? extends ObservableSource<TLeftEnd>> leftEnd,
@NonNull Function<? super TRight,? extends ObservableSource<TRightEnd>> rightEnd,
@NonNull BiFunction<? super T,? super Observable<TRight>,? extends R> resultSelector)
Returns an
Observable that correlates two ObservableSource s when they overlap in time and groups the results. |
@NonNull Observable<T> |
hide()
Hides the identity of the current
Observable and its Disposable . |
@NonNull Completable |
ignoreElements()
Ignores all items emitted by the current
Observable and only calls onComplete or onError . |
static @NonNull Observable<Long> |
interval(long initialDelay,
long period,
@NonNull TimeUnit unit)
Returns an
Observable that emits a 0L after the initialDelay and ever increasing numbers
after each period of time thereafter. |
static @NonNull Observable<Long> |
interval(long initialDelay,
long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits a 0L after the initialDelay and ever increasing numbers
after each period of time thereafter, on a specified Scheduler . |
static @NonNull Observable<Long> |
interval(long period,
@NonNull TimeUnit unit)
Returns an
Observable that emits a sequential number every specified interval of time. |
static @NonNull Observable<Long> |
interval(long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits a sequential number every specified interval of time, on a
specified Scheduler . |
static @NonNull Observable<Long> |
intervalRange(long start,
long count,
long initialDelay,
long period,
@NonNull TimeUnit unit)
Signals a range of long values, the first after some initial delay and the rest periodically after.
|
static @NonNull Observable<Long> |
intervalRange(long start,
long count,
long initialDelay,
long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Signals a range of long values, the first after some initial delay and the rest periodically after.
|
@NonNull Single<Boolean> |
isEmpty()
|
<TRight,TLeftEnd,TRightEnd,R> |
join(@NonNull ObservableSource<? extends TRight> other,
@NonNull Function<? super T,? extends ObservableSource<TLeftEnd>> leftEnd,
@NonNull Function<? super TRight,? extends ObservableSource<TRightEnd>> rightEnd,
@NonNull BiFunction<? super T,? super TRight,? extends R> resultSelector)
Correlates the items emitted by two
ObservableSource s based on overlapping durations. |
static <T> @NonNull Observable<T> |
just(T item)
Returns an
Observable that signals the given (constant reference) item and then completes. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2)
Converts two items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3)
Converts three items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4)
Converts four items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5)
Converts five items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5,
T item6)
Converts six items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5,
T item6,
T item7)
Converts seven items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5,
T item6,
T item7,
T item8)
Converts eight items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5,
T item6,
T item7,
T item8,
T item9)
Converts nine items into an
Observable that emits those items. |
static <T> @NonNull Observable<T> |
just(T item1,
T item2,
T item3,
T item4,
T item5,
T item6,
T item7,
T item8,
T item9,
T item10)
Converts ten items into an
Observable that emits those items. |
@NonNull Single<T> |
last(T defaultItem)
Returns a
Single that emits only the last item emitted by the current Observable , or a default item
if the current Observable completes without emitting any items. |
@NonNull Maybe<T> |
lastElement()
Returns a
Maybe that emits the last item emitted by the current Observable or
completes if the current Observable is empty. |
@NonNull Single<T> |
lastOrError()
Returns a
Single that emits only the last item emitted by the current Observable or
signals a NoSuchElementException if the current Observable is empty. |
@NonNull CompletionStage<T> |
lastOrErrorStage()
Signals the last upstream item or a
NoSuchElementException if the upstream is empty via
a CompletionStage . |
@NonNull CompletionStage<T> |
lastStage(T defaultItem)
Signals the last upstream item (or the default item if the upstream is empty) via
a
CompletionStage . |
<R> @NonNull Observable<R> |
lift(@NonNull ObservableOperator<? extends R,? super T> lifter)
This method requires advanced knowledge about building operators, please consider
other standard composition methods first;
Returns an
Observable which, when subscribed to, invokes the apply(Observer) method
of the provided ObservableOperator for each individual downstream Observer and allows the
insertion of a custom operator by accessing the downstream's Observer during this subscription phase
and providing a new Observer , containing the custom operator's intended business logic, that will be
used in the subscription process going further upstream. |
<R> @NonNull Observable<R> |
map(@NonNull Function<? super T,? extends R> mapper)
Returns an
Observable that applies a specified function to each item emitted by the current Observable and
emits the results of these function applications. |
<R> @NonNull Observable<R> |
mapOptional(@NonNull Function<? super T,Optional<? extends R>> mapper)
Maps each upstream value into an
Optional and emits the contained item if not empty. |
@NonNull Observable<Notification<T>> |
materialize()
Returns an
Observable that represents all of the emissions and notifications from the current
Observable into emissions marked with their original types within Notification objects. |
static <T> @NonNull Observable<T> |
merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
|
static <T> @NonNull Observable<T> |
merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency)
Flattens an
Iterable of ObservableSource s into one Observable , without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Flattens an
Iterable of ObservableSource s into one Observable , without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
merge(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Flattens an
ObservableSource that emits ObservableSource s into a single Observable that emits the items emitted by
those ObservableSource s, without any transformation. |
static <T> @NonNull Observable<T> |
merge(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int maxConcurrency)
Flattens an
ObservableSource that emits ObservableSource s into a single Observable that emits the items emitted by
those ObservableSource s, without any transformation, while limiting the maximum number of concurrent
subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
merge(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2)
Flattens two
ObservableSource s into a single Observable , without any transformation. |
static <T> @NonNull Observable<T> |
merge(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3)
Flattens three
ObservableSource s into a single Observable , without any transformation. |
static <T> @NonNull Observable<T> |
merge(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3,
@NonNull ObservableSource<? extends T> source4)
Flattens four
ObservableSource s into a single Observable , without any transformation. |
static <T> @NonNull Observable<T> |
mergeArray(int maxConcurrency,
int bufferSize,
ObservableSource<? extends T>... sources)
Flattens an array of
ObservableSource s into one Observable , without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
mergeArray(ObservableSource<? extends T>... sources)
Flattens an array of
ObservableSource s into one Observable , without any transformation. |
static <T> @NonNull Observable<T> |
mergeArrayDelayError(int maxConcurrency,
int bufferSize,
ObservableSource<? extends T>... sources)
Flattens an array of
ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the ObservableSource s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
mergeArrayDelayError(ObservableSource<? extends T>... sources)
Flattens an array of
ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the ObservableSource s without being interrupted by an error
notification from one of them. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Flattens an
Iterable of ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the returned ObservableSource s without being interrupted by an error
notification from one of them. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency)
Flattens an
Iterable of ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the returned ObservableSource s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
int maxConcurrency,
int bufferSize)
Flattens an
Iterable of ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the returned ObservableSource s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Flattens an
ObservableSource that emits ObservableSource s into one Observable , in a way that allows an Observer to
receive all successfully emitted items from all of the emitted ObservableSource s without being interrupted by
an error notification from one of them. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int maxConcurrency)
Flattens an
ObservableSource that emits ObservableSource s into one Observable , in a way that allows an Observer to
receive all successfully emitted items from all of the emitted ObservableSource s without being interrupted by
an error notification from one of them, while limiting the
number of concurrent subscriptions to these ObservableSource s. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2)
Flattens two
ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from each of the ObservableSource s without being interrupted by an error
notification from one of them. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3)
Flattens three
ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from all of the ObservableSource s without being interrupted by an error
notification from one of them. |
static <T> @NonNull Observable<T> |
mergeDelayError(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull ObservableSource<? extends T> source3,
@NonNull ObservableSource<? extends T> source4)
Flattens four
ObservableSource s into one Observable , in a way that allows an Observer to receive all
successfully emitted items from all of the ObservableSource s without being interrupted by an error
notification from one of them. |
@NonNull Observable<T> |
mergeWith(@NonNull CompletableSource other)
Relays the items of the current
Observable and completes only when the other CompletableSource completes
as well. |
@NonNull Observable<T> |
mergeWith(@NonNull MaybeSource<? extends T> other)
Merges the sequence of items of the current
Observable with the success value of the other MaybeSource
or waits both to complete normally if the MaybeSource is empty. |
@NonNull Observable<T> |
mergeWith(@NonNull ObservableSource<? extends T> other)
Flattens the current
Observable and another ObservableSource into a single Observable sequence, without any transformation. |
@NonNull Observable<T> |
mergeWith(@NonNull SingleSource<? extends T> other)
Merges the sequence of items of the current
Observable with the success value of the other SingleSource . |
static <T> @NonNull Observable<T> |
never()
Returns an
Observable that never sends any items or notifications to an Observer . |
@NonNull Observable<T> |
observeOn(@NonNull Scheduler scheduler)
Returns an
Observable to perform the current Observable 's emissions and notifications on a specified Scheduler ,
asynchronously with an unbounded buffer with Flowable.bufferSize() "island size". |
@NonNull Observable<T> |
observeOn(@NonNull Scheduler scheduler,
boolean delayError)
Returns an
Observable to perform the current Observable 's emissions and notifications on a specified Scheduler ,
asynchronously with an unbounded buffer with Flowable.bufferSize() "island size" and optionally delays onError notifications. |
@NonNull Observable<T> |
observeOn(@NonNull Scheduler scheduler,
boolean delayError,
int bufferSize)
Returns an
Observable to perform the current Observable 's emissions and notifications on a specified Scheduler ,
asynchronously with an unbounded buffer of configurable "island size" and optionally delays onError notifications. |
<U> @NonNull Observable<U> |
ofType(@NonNull Class<U> clazz)
Filters the items emitted by the current
Observable , only emitting those of the specified type. |
@NonNull Observable<T> |
onErrorComplete()
Returns an
Observable instance that if the current Observable emits an error, it will emit an onComplete
and swallow the throwable. |
@NonNull Observable<T> |
onErrorComplete(@NonNull Predicate<? super Throwable> predicate)
Returns an
Observable instance that if the current Observable emits an error and the predicate returns
true , it will emit an onComplete and swallow the throwable. |
@NonNull Observable<T> |
onErrorResumeNext(@NonNull Function<? super Throwable,? extends ObservableSource<? extends T>> fallbackSupplier)
Resumes the flow with an
ObservableSource returned for the failure Throwable of the current Observable by a
function instead of signaling the error via onError . |
@NonNull Observable<T> |
onErrorResumeWith(@NonNull ObservableSource<? extends T> fallback)
Resumes the flow with the given
ObservableSource when the current Observable fails instead of
signaling the error via onError . |
@NonNull Observable<T> |
onErrorReturn(@NonNull Function<? super Throwable,? extends T> itemSupplier)
Ends the flow with a last item returned by a function for the
Throwable error signaled by the current
Observable instead of signaling the error via onError . |
@NonNull Observable<T> |
onErrorReturnItem(T item)
Ends the flow with the given last item when the current
Observable fails instead of signaling the error via onError . |
@NonNull Observable<T> |
onTerminateDetach()
Nulls out references to the upstream producer and downstream
Observer if
the sequence is terminated or downstream calls dispose() . |
@NonNull ConnectableObservable<T> |
publish()
Returns a
ConnectableObservable , which is a variety of ObservableSource that waits until its
connect method is called before it begins emitting items to those
Observer s that have subscribed to it. |
<R> @NonNull Observable<R> |
publish(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector)
Returns an
Observable that emits the results of invoking a specified selector on items emitted by a
ConnectableObservable that shares a single subscription to the current Observable sequence. |
static @NonNull Observable<Integer> |
range(int start,
int count)
Returns an
Observable that emits a sequence of Integer s within a specified range. |
static @NonNull Observable<Long> |
rangeLong(long start,
long count)
Returns an
Observable that emits a sequence of Long s within a specified range. |
@NonNull Maybe<T> |
reduce(@NonNull BiFunction<T,T,T> reducer)
Returns a
Maybe that applies a specified accumulator function to the first item emitted by the current
Observable , then feeds the result of that function along with the second item emitted by the current
Observable into the same function, and so on until all items have been emitted by the current and finite Observable ,
and emits the final result from the final call to your function as its sole item. |
<R> @NonNull Single<R> |
reduce(R seed,
@NonNull BiFunction<R,? super T,R> reducer)
Returns a
Single that applies a specified accumulator function to the first item emitted by the current
Observable and a specified seed value, then feeds the result of that function along with the second item
emitted by the current Observable into the same function, and so on until all items have been emitted by the
current and finite Observable , emitting the final result from the final call to your function as its sole item. |
<R> @NonNull Single<R> |
reduceWith(@NonNull Supplier<R> seedSupplier,
@NonNull BiFunction<R,? super T,R> reducer)
Returns a
Single that applies a specified accumulator function to the first item emitted by the current
Observable and a seed value derived from calling a specified seedSupplier , then feeds the result
of that function along with the second item emitted by the current Observable into the same function,
and so on until all items have been emitted by the current and finite Observable , emitting the final result
from the final call to your function as its sole item. |
@NonNull Observable<T> |
repeat()
Returns an
Observable that repeats the sequence of items emitted by the current Observable indefinitely. |
@NonNull Observable<T> |
repeat(long times)
Returns an
Observable that repeats the sequence of items emitted by the current Observable at most
count times. |
@NonNull Observable<T> |
repeatUntil(@NonNull BooleanSupplier stop)
Returns an
Observable that repeats the sequence of items emitted by the current Observable until
the provided stop function returns true . |
@NonNull Observable<T> |
repeatWhen(@NonNull Function<? super Observable<Object>,? extends ObservableSource<?>> handler)
Returns an
Observable that emits the same values as the current Observable with the exception of an
onComplete . |
@NonNull ConnectableObservable<T> |
replay()
Returns a
ConnectableObservable that shares a single subscription to the current Observable
that will replay all of its items and notifications to any future Observer . |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector)
Returns an
Observable that emits items that are the results of invoking a specified selector on the items
emitted by a ConnectableObservable that shares a single subscription to the current Observable . |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
int bufferSize)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying bufferSize notifications. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
int bufferSize,
boolean eagerTruncate)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying bufferSize notifications. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
int bufferSize,
long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying no more than bufferSize items that were emitted within a specified time window. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
int bufferSize,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying no more than bufferSize items that were emitted within a specified time window. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
int bufferSize,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean eagerTruncate)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying no more than bufferSize items that were emitted within a specified time window. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying all items that were emitted within a specified time window. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying all items that were emitted within a specified time window. |
<R> @NonNull Observable<R> |
replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean eagerTruncate)
Returns an
Observable that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable that shares a single subscription to the current Observable ,
replaying all items that were emitted within a specified time window. |
@NonNull ConnectableObservable<T> |
replay(int bufferSize)
Returns a
ConnectableObservable that shares a single subscription to the current Observable that
replays at most bufferSize items emitted by the current Observable . |
@NonNull ConnectableObservable<T> |
replay(int bufferSize,
boolean eagerTruncate)
Returns a
ConnectableObservable that shares a single subscription to the current Observable that
replays at most bufferSize items emitted by the current Observable . |
@NonNull ConnectableObservable<T> |
replay(int bufferSize,
long time,
@NonNull TimeUnit unit)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
replays at most bufferSize items that were emitted during a specified time window. |
@NonNull ConnectableObservable<T> |
replay(int bufferSize,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
that replays a maximum of bufferSize items that are emitted within a specified time window. |
@NonNull ConnectableObservable<T> |
replay(int bufferSize,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean eagerTruncate)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
that replays a maximum of bufferSize items that are emitted within a specified time window. |
@NonNull ConnectableObservable<T> |
replay(long time,
@NonNull TimeUnit unit)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
replays all items emitted by the current Observable within a specified time window. |
@NonNull ConnectableObservable<T> |
replay(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
replays all items emitted by the current Observable within a specified time window. |
@NonNull ConnectableObservable<T> |
replay(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean eagerTruncate)
Returns a
ConnectableObservable that shares a single subscription to the current Observable and
replays all items emitted by the current Observable within a specified time window. |
@NonNull Observable<T> |
retry()
Returns an
Observable that mirrors the current Observable , resubscribing to it if it calls onError
(infinite retry count). |
@NonNull Observable<T> |
retry(@NonNull BiPredicate<? super Integer,? super Throwable> predicate)
Returns an
Observable that mirrors the current Observable , resubscribing to it if it calls onError
and the predicate returns true for that specific exception and retry count. |
@NonNull Observable<T> |
retry(long times)
Returns an
Observable that mirrors the current Observable , resubscribing to it if it calls onError
up to a specified number of retries. |
@NonNull Observable<T> |
retry(long times,
@NonNull Predicate<? super Throwable> predicate)
Retries at most times or until the predicate returns
false , whichever happens first. |
@NonNull Observable<T> |
retry(@NonNull Predicate<? super Throwable> predicate)
Retries the current
Observable if the predicate returns true . |
@NonNull Observable<T> |
retryUntil(@NonNull BooleanSupplier stop)
Retries until the given stop function returns
true . |
@NonNull Observable<T> |
retryWhen(@NonNull Function<? super Observable<Throwable>,? extends ObservableSource<?>> handler)
Returns an
Observable that emits the same values as the current Observable with the exception of an
onError . |
void |
safeSubscribe(@NonNull Observer<? super T> observer)
Subscribes to the current
Observable and wraps the given Observer into a SafeObserver
(if not already a SafeObserver ) that
deals with exceptions thrown by a misbehaving Observer (that doesn't follow the
Reactive Streams specification). |
@NonNull Observable<T> |
sample(long period,
@NonNull TimeUnit unit)
Returns an
Observable that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals. |
@NonNull Observable<T> |
sample(long period,
@NonNull TimeUnit unit,
boolean emitLast)
Returns an
Observable that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals and optionally emit the very last upstream item when the upstream completes. |
@NonNull Observable<T> |
sample(long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler . |
@NonNull Observable<T> |
sample(long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean emitLast)
Returns an
Observable that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler
and optionally emit the very last upstream item when the upstream completes. |
@NonNull Observable<T> |
sample(long period,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean emitLast,
@NonNull Consumer<? super T> onDropped)
Returns an
Observable that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler . |
<U> @NonNull Observable<T> |
sample(@NonNull ObservableSource<U> sampler)
Returns an
Observable that, when the specified sampler ObservableSource emits an item or completes,
emits the most recently emitted item (if any) emitted by the current Observable since the previous
emission from the sampler ObservableSource . |
<U> @NonNull Observable<T> |
sample(@NonNull ObservableSource<U> sampler,
boolean emitLast)
Returns an
Observable that, when the specified sampler ObservableSource emits an item or completes,
emits the most recently emitted item (if any) emitted by the current Observable since the previous
emission from the sampler ObservableSource
and optionally emit the very last upstream item when the upstream or other ObservableSource complete. |
@NonNull Observable<T> |
scan(@NonNull BiFunction<T,T,T> accumulator)
Returns an
Observable that emits the first value emitted by the current Observable , then emits one value
for each subsequent value emitted by the current Observable . |
<R> @NonNull Observable<R> |
scan(R initialValue,
@NonNull BiFunction<R,? super T,R> accumulator)
Returns an
Observable that emits the provided initial (seed) value, then emits one value for each value emitted
by the current Observable . |
<R> @NonNull Observable<R> |
scanWith(@NonNull Supplier<R> seedSupplier,
@NonNull BiFunction<R,? super T,R> accumulator)
Returns an
Observable that emits the provided initial (seed) value, then emits one value for each value emitted
by the current Observable . |
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2)
Returns a
Single that emits a Boolean value that indicates whether two ObservableSource sequences are the
same by comparing the items emitted by each ObservableSource pairwise. |
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull BiPredicate<? super T,? super T> isEqual)
Returns a
Single that emits a Boolean value that indicates whether two ObservableSource sequences are the
same by comparing the items emitted by each ObservableSource pairwise based on the results of a specified
equality function. |
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
@NonNull BiPredicate<? super T,? super T> isEqual,
int bufferSize)
Returns a
Single that emits a Boolean value that indicates whether two ObservableSource sequences are the
same by comparing the items emitted by each ObservableSource pairwise based on the results of a specified
equality function. |
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull ObservableSource<? extends T> source1,
@NonNull ObservableSource<? extends T> source2,
int bufferSize)
Returns a
Single that emits a Boolean value that indicates whether two ObservableSource sequences are the
same by comparing the items emitted by each ObservableSource pairwise. |
@NonNull Observable<T> |
serialize()
Forces the current
Observable 's emissions and notifications to be serialized and for it to obey
the ObservableSource contract in other ways. |
@NonNull Observable<T> |
share()
Returns a new
Observable that multicasts (and shares a single subscription to) the current Observable . |
@NonNull Single<T> |
single(T defaultItem)
Returns a
Single that emits the single item emitted by the current Observable , if the current Observable
emits only a single item, or a default item if the current Observable emits no items. |
@NonNull Maybe<T> |
singleElement()
Returns a
Maybe that completes if the current Observable is empty or emits the single item
emitted by the current Observable , or signals an IllegalArgumentException if the current
Observable emits more than one item. |
@NonNull Single<T> |
singleOrError()
Returns a
Single that emits the single item emitted by the current Observable if it
emits only a single item, otherwise
if the current Observable completes without emitting any items or emits more than one item a
NoSuchElementException or IllegalArgumentException will be signaled respectively. |
@NonNull CompletionStage<T> |
singleOrErrorStage()
Signals the only expected upstream item, a
NoSuchElementException if the upstream is empty
or signals IllegalArgumentException if the upstream has more than one item
via a CompletionStage . |
@NonNull CompletionStage<T> |
singleStage(T defaultItem)
Signals the only expected upstream item (or the default item if the upstream is empty)
or signals
IllegalArgumentException if the upstream has more than one item
via a CompletionStage . |
@NonNull Observable<T> |
skip(long count)
Returns an
Observable that skips the first count items emitted by the current Observable and emits
the remainder. |
@NonNull Observable<T> |
skip(long time,
@NonNull TimeUnit unit)
Returns an
Observable that skips values emitted by the current Observable before a specified time window
elapses. |
@NonNull Observable<T> |
skip(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that skips values emitted by the current Observable before a specified time window
on a specified Scheduler elapses. |
@NonNull Observable<T> |
skipLast(int count)
Returns an
Observable that drops a specified number of items from the end of the sequence emitted by the
current Observable . |
@NonNull Observable<T> |
skipLast(long time,
@NonNull TimeUnit unit)
Returns an
Observable that drops items emitted by the current Observable during a specified time window
before the source completes. |
@NonNull Observable<T> |
skipLast(long time,
@NonNull TimeUnit unit,
boolean delayError)
Returns an
Observable that drops items emitted by the current Observable during a specified time window
before the source completes. |
@NonNull Observable<T> |
skipLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that drops items emitted by the current Observable during a specified time window
(defined on a specified scheduler) before the source completes. |
@NonNull Observable<T> |
skipLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError)
Returns an
Observable that drops items emitted by the current Observable during a specified time window
(defined on a specified scheduler) before the source completes. |
@NonNull Observable<T> |
skipLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError,
int bufferSize)
Returns an
Observable that drops items emitted by the current Observable during a specified time window
(defined on a specified scheduler) before the source completes. |
<U> @NonNull Observable<T> |
skipUntil(@NonNull ObservableSource<U> other)
Returns an
Observable that skips items emitted by the current Observable until a second ObservableSource emits
an item. |
@NonNull Observable<T> |
skipWhile(@NonNull Predicate<? super T> predicate)
Returns an
Observable that skips all items emitted by the current Observable as long as a specified
condition holds true , but emits all further source items as soon as the condition becomes false . |
@NonNull Observable<T> |
sorted()
Returns an
Observable that emits the events emitted by the current Observable , in a
sorted order. |
@NonNull Observable<T> |
sorted(@NonNull Comparator<? super T> comparator)
Returns an
Observable that emits the events emitted by the current Observable , in a
sorted order based on a specified comparison function. |
@NonNull Observable<T> |
startWith(@NonNull CompletableSource other)
Returns an
Observable which first runs the other CompletableSource
then the current Observable if the other completed normally. |
@NonNull Observable<T> |
startWith(@NonNull MaybeSource<T> other)
Returns an
Observable which first runs the other MaybeSource
then the current Observable if the other succeeded or completed normally. |
@NonNull Observable<T> |
startWith(@NonNull ObservableSource<? extends T> other)
Returns an
Observable that emits the items in a specified ObservableSource before it begins to emit
items emitted by the current Observable . |
@NonNull Observable<T> |
startWith(@NonNull SingleSource<T> other)
Returns an
Observable which first runs the other SingleSource
then the current Observable if the other succeeded normally. |
@NonNull Observable<T> |
startWithArray(T... items)
Returns an
Observable that emits the specified items before it begins to emit items emitted by the current
Observable . |
@NonNull Observable<T> |
startWithItem(T item)
Returns an
Observable that emits a specified item before it begins to emit items emitted by the current
Observable . |
@NonNull Observable<T> |
startWithIterable(@NonNull Iterable<? extends T> items)
Returns an
Observable that emits the items in a specified Iterable before it begins to emit items
emitted by the current Observable . |
@NonNull Disposable |
subscribe()
Subscribes to the current
Observable and ignores onNext and onComplete emissions. |
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onNext)
Subscribes to the current
Observable and provides a callback to handle the items it emits. |
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onNext,
@NonNull Consumer<? super Throwable> onError)
Subscribes to the current
Observable and provides callbacks to handle the items it emits and any error
notification it signals. |
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onNext,
@NonNull Consumer<? super Throwable> onError,
@NonNull Action onComplete)
Subscribes to the current
Observable and provides callbacks to handle the items it emits and any error or
completion notification it signals. |
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onNext,
@NonNull Consumer<? super Throwable> onError,
@NonNull Action onComplete,
@NonNull DisposableContainer container)
Wraps the given onXXX callbacks into a
Disposable Observer ,
adds it to the given DisposableContainer and ensures, that if the upstream
terminates or this particular Disposable is disposed, the Observer is removed
from the given container. |
void |
subscribe(@NonNull Observer<? super T> observer)
Subscribes the given
Observer to this ObservableSource instance. |
protected abstract void |
subscribeActual(@NonNull Observer<? super T> observer)
Operator implementations (both source and intermediate) should implement this method that
performs the necessary business logic and handles the incoming
Observer s. |
@NonNull Observable<T> |
subscribeOn(@NonNull Scheduler scheduler)
|
<E extends Observer<? super T>> |
subscribeWith(E observer)
Subscribes a given
Observer (subclass) to the current Observable and returns the given
Observer instance as is. |
@NonNull Observable<T> |
switchIfEmpty(@NonNull ObservableSource<? extends T> other)
Returns an
Observable that emits the items emitted by the current Observable or the items of an alternate
ObservableSource if the current Observable is empty. |
<R> @NonNull Observable<R> |
switchMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns an ObservableSource , and then emitting the items emitted by the most recently emitted
of these ObservableSource s. |
<R> @NonNull Observable<R> |
switchMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int bufferSize)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns an ObservableSource , and then emitting the items emitted by the most recently emitted
of these ObservableSource s. |
@NonNull Completable |
switchMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Maps the items of the current
Observable into CompletableSource s, subscribes to the newer one while
disposing the subscription to the previous CompletableSource , thus keeping at most one
active CompletableSource running. |
@NonNull Completable |
switchMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper)
Maps the upstream values into
CompletableSource s, subscribes to the newer one while
disposing the subscription to the previous CompletableSource , thus keeping at most one
active CompletableSource running and delaying any main or inner errors until all
of them terminate. |
<R> @NonNull Observable<R> |
switchMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns an ObservableSource , and then emitting the items emitted by the most recently emitted
of these ObservableSource s and delays any error until all ObservableSource s terminate. |
<R> @NonNull Observable<R> |
switchMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper,
int bufferSize)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns an ObservableSource , and then emitting the items emitted by the most recently emitted
of these ObservableSource s and delays any error until all ObservableSource s terminate. |
<R> @NonNull Observable<R> |
switchMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Maps the items of the current
Observable into MaybeSource s and switches (subscribes) to the newer ones
while disposing the older ones (and ignoring their signals) and emits the latest success value of the current one if
available while failing immediately if the current Observable or any of the
active inner MaybeSource s fail. |
<R> @NonNull Observable<R> |
switchMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Maps the upstream items into
MaybeSource s and switches (subscribes) to the newer ones
while disposing the older ones (and ignoring their signals) and emits the latest success value of the current one if
available, delaying errors from the current Observable or the inner MaybeSource s until all terminate. |
<R> @NonNull Observable<R> |
switchMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns a SingleSource , and then emitting the item emitted by the most recently emitted
of these SingleSource s. |
<R> @NonNull Observable<R> |
switchMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Returns a new
Observable by applying a function that you supply to each item emitted by the current
Observable that returns a SingleSource , and then emitting the item emitted by the most recently emitted
of these SingleSource s and delays any error until all SingleSource s terminate. |
static <T> @NonNull Observable<T> |
switchOnNext(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Converts an
ObservableSource that emits ObservableSource s into an Observable that emits the items emitted by the
most recently emitted of those ObservableSource s. |
static <T> @NonNull Observable<T> |
switchOnNext(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int bufferSize)
Converts an
ObservableSource that emits ObservableSource s into an Observable that emits the items emitted by the
most recently emitted of those ObservableSource s. |
static <T> @NonNull Observable<T> |
switchOnNextDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Converts an
ObservableSource that emits ObservableSource s into an Observable that emits the items emitted by the
most recently emitted of those ObservableSource s and delays any exception until all ObservableSource s terminate. |
static <T> @NonNull Observable<T> |
switchOnNextDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources,
int bufferSize)
Converts an
ObservableSource that emits ObservableSource s into an Observable that emits the items emitted by the
most recently emitted of those ObservableSource s and delays any exception until all ObservableSource s terminate. |
@NonNull Observable<T> |
take(long count)
Returns an
Observable that emits only the first count items emitted by the current Observable . |
@NonNull Observable<T> |
take(long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits those items emitted by the current Observable before a specified time runs
out. |
@NonNull Observable<T> |
take(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits those items emitted by the current Observable before a specified time (on a
specified Scheduler ) runs out. |
@NonNull Observable<T> |
takeLast(int count)
Returns an
Observable that emits at most the last count items emitted by the current Observable . |
@NonNull Observable<T> |
takeLast(long count,
long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits at most a specified number of items from the current Observable that were
emitted in a specified window of time before the current Observable completed. |
@NonNull Observable<T> |
takeLast(long count,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits at most a specified number of items from the current Observable that were
emitted in a specified window of time before the current Observable completed, where the timing information is
provided by a given Scheduler . |
@NonNull Observable<T> |
takeLast(long count,
long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError,
int bufferSize)
Returns an
Observable that emits at most a specified number of items from the current Observable that were
emitted in a specified window of time before the current Observable completed, where the timing information is
provided by a given Scheduler . |
@NonNull Observable<T> |
takeLast(long time,
@NonNull TimeUnit unit)
Returns an
Observable that emits the items from the current Observable that were emitted in a specified
window of time before the current Observable completed. |
@NonNull Observable<T> |
takeLast(long time,
@NonNull TimeUnit unit,
boolean delayError)
Returns an
Observable that emits the items from the current Observable that were emitted in a specified
window of time before the current Observable completed. |
@NonNull Observable<T> |
takeLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits the items from the current Observable that were emitted in a specified
window of time before the current Observable completed, where the timing information is provided by a specified
Scheduler . |
@NonNull Observable<T> |
takeLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError)
Returns an
Observable that emits the items from the current Observable that were emitted in a specified
window of time before the current Observable completed, where the timing information is provided by a specified
Scheduler . |
@NonNull Observable<T> |
takeLast(long time,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean delayError,
int bufferSize)
Returns an
Observable that emits the items from the current Observable that were emitted in a specified
window of time before the current Observable completed, where the timing information is provided by a specified
Scheduler . |
<U> @NonNull Observable<T> |
takeUntil(@NonNull ObservableSource<U> other)
Returns an
Observable that emits the items emitted by the current Observable until a second ObservableSource
emits an item or completes. |
@NonNull Observable<T> |
takeUntil(@NonNull Predicate<? super T> stopPredicate)
Returns an
Observable that emits items emitted by the current Observable , checks the specified predicate
for each item, and then completes when the condition is satisfied. |
@NonNull Observable<T> |
takeWhile(@NonNull Predicate<? super T> predicate)
Returns an
Observable that emits items emitted by the current Observable so long as each item satisfied a
specified condition, and then completes as soon as this condition is not satisfied. |
@NonNull TestObserver<T> |
test()
Creates a
TestObserver and subscribes it to the current Observable . |
@NonNull TestObserver<T> |
test(boolean dispose)
Creates a
TestObserver , optionally disposes it and then subscribes
it to the current Observable . |
@NonNull Observable<T> |
throttleFirst(long windowDuration,
@NonNull TimeUnit unit)
Returns an
Observable that emits only the first item emitted by the current Observable during sequential
time windows of a specified duration. |
@NonNull Observable<T> |
throttleFirst(long skipDuration,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits only the first item emitted by the current Observable during sequential
time windows of a specified duration, where the windows are managed by a specified Scheduler . |
@NonNull Observable<T> |
throttleFirst(long skipDuration,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull Consumer<? super T> onDropped)
Returns an
Observable that emits only the first item emitted by the current Observable during sequential
time windows of a specified duration, where the windows are managed by a specified Scheduler . |
@NonNull Observable<T> |
throttleLast(long intervalDuration,
@NonNull TimeUnit unit)
Returns an
Observable that emits only the last item emitted by the current Observable during sequential
time windows of a specified duration. |
@NonNull Observable<T> |
throttleLast(long intervalDuration,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits only the last item emitted by the current Observable during sequential
time windows of a specified duration, where the duration is governed by a specified Scheduler . |
@NonNull Observable<T> |
throttleLast(long intervalDuration,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull Consumer<? super T> onDropped)
Returns an
Observable that emits only the last item emitted by the current Observable during sequential
time windows of a specified duration, where the duration is governed by a specified Scheduler . |
@NonNull Observable<T> |
throttleLatest(long timeout,
@NonNull TimeUnit unit)
Throttles items from the current
Observable by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them. |
@NonNull Observable<T> |
throttleLatest(long timeout,
@NonNull TimeUnit unit,
boolean emitLast)
Throttles items from the current
Observable by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them. |
@NonNull Observable<T> |
throttleLatest(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Throttles items from the current
Observable by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them. |
@NonNull Observable<T> |
throttleLatest(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean emitLast)
Throttles items from the current
Observable by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them. |
@NonNull Observable<T> |
throttleLatest(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
boolean emitLast,
@NonNull Consumer<? super T> onDropped)
Throttles items from the current
Observable by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them, invoking the consumer for any dropped item. |
@NonNull Observable<T> |
throttleWithTimeout(long timeout,
@NonNull TimeUnit unit)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires. |
@NonNull Observable<T> |
throttleWithTimeout(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires on a specified
Scheduler . |
@NonNull Observable<T> |
throttleWithTimeout(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull Consumer<? super T> onDropped)
Returns an
Observable that mirrors the current Observable , except that it drops items emitted by the
current Observable that are followed by newer items before a timeout value expires on a specified
Scheduler . |
@NonNull Observable<Timed<T>> |
timeInterval()
Returns an
Observable that emits records of the time interval between consecutive items emitted by the
current Observable . |
@NonNull Observable<Timed<T>> |
timeInterval(@NonNull Scheduler scheduler)
Returns an
Observable that emits records of the time interval between consecutive items emitted by the
current Observable , where this interval is computed on a specified Scheduler . |
@NonNull Observable<Timed<T>> |
timeInterval(@NonNull TimeUnit unit)
Returns an
Observable that emits records of the time interval between consecutive items emitted by the
current Observable . |
@NonNull Observable<Timed<T>> |
timeInterval(@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits records of the time interval between consecutive items emitted by the
current Observable , where this interval is computed on a specified Scheduler . |
<V> @NonNull Observable<T> |
timeout(@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator)
Returns an
Observable that mirrors the current Observable , but notifies observers of a
TimeoutException if an item emitted by the current Observable doesn't arrive within a window of
time after the emission of the previous item, where that period of time is measured by an ObservableSource that
is a function of the previous item. |
<V> @NonNull Observable<T> |
timeout(@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator,
@NonNull ObservableSource<? extends T> fallback)
Returns an
Observable that mirrors the current Observable , but that switches to a fallback ObservableSource if
an item emitted by the current Observable doesn't arrive within a window of time after the emission of the
previous item, where that period of time is measured by an ObservableSource that is a function of the previous
item. |
@NonNull Observable<T> |
timeout(long timeout,
@NonNull TimeUnit unit)
Returns an
Observable that mirrors the current Observable but applies a timeout policy for each emitted
item. |
@NonNull Observable<T> |
timeout(long timeout,
@NonNull TimeUnit unit,
@NonNull ObservableSource<? extends T> fallback)
Returns an
Observable that mirrors the current Observable but applies a timeout policy for each emitted
item. |
@NonNull Observable<T> |
timeout(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that mirrors the current Observable but applies a timeout policy for each emitted
item, where this policy is governed on a specified Scheduler . |
@NonNull Observable<T> |
timeout(long timeout,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
@NonNull ObservableSource<? extends T> fallback)
Returns an
Observable that mirrors the current Observable but applies a timeout policy for each emitted
item using a specified Scheduler . |
<U,V> @NonNull Observable<T> |
timeout(@NonNull ObservableSource<U> firstTimeoutIndicator,
@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator)
Returns an
Observable that mirrors the current Observable , but notifies observers of a
TimeoutException if either the first item emitted by the current Observable or any subsequent item
doesn't arrive within time windows defined by indicator ObservableSource s. |
<U,V> @NonNull Observable<T> |
timeout(@NonNull ObservableSource<U> firstTimeoutIndicator,
@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator,
@NonNull ObservableSource<? extends T> fallback)
Returns an
Observable that mirrors the current Observable , but switches to a fallback ObservableSource if either
the first item emitted by the current Observable or any subsequent item doesn't arrive within time windows
defined by indicator ObservableSource s. |
static @NonNull Observable<Long> |
timer(long delay,
@NonNull TimeUnit unit)
Returns an
Observable that emits 0L after a specified delay, and then completes. |
static @NonNull Observable<Long> |
timer(long delay,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits 0L after a specified delay, on a specified Scheduler , and then
completes. |
@NonNull Observable<Timed<T>> |
timestamp()
Returns an
Observable that emits each item emitted by the current Observable , wrapped in a
Timed object. |
@NonNull Observable<Timed<T>> |
timestamp(@NonNull Scheduler scheduler)
|
@NonNull Observable<Timed<T>> |
timestamp(@NonNull TimeUnit unit)
Returns an
Observable that emits each item emitted by the current Observable , wrapped in a
Timed object. |
@NonNull Observable<Timed<T>> |
timestamp(@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
|
<R> R |
to(@NonNull ObservableConverter<T,? extends R> converter)
Calls the specified converter function during assembly time and returns its resulting value.
|
@NonNull Flowable<T> |
toFlowable(@NonNull BackpressureStrategy strategy)
Converts the current
Observable into a Flowable by applying the specified backpressure strategy. |
@NonNull Future<T> |
toFuture()
Returns a
Future representing the only value emitted by the current Observable . |
@NonNull Single<List<T>> |
toList()
|
@NonNull Single<List<T>> |
toList(int capacityHint)
|
<U extends Collection<? super T>> |
toList(@NonNull Supplier<U> collectionSupplier)
Returns a
Single that emits a single item, a Collection (subclass) composed of all the items emitted by the
finite upstream Observable . |
<K> @NonNull Single<Map<K,T>> |
toMap(@NonNull Function<? super T,? extends K> keySelector)
|
<K,V> @NonNull Single<Map<K,V>> |
toMap(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector)
|
<K,V> @NonNull Single<Map<K,V>> |
toMap(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector,
@NonNull Supplier<? extends Map<K,V>> mapSupplier)
|
<K> @NonNull Single<Map<K,Collection<T>>> |
toMultimap(@NonNull Function<? super T,? extends K> keySelector)
|
<K,V> @NonNull Single<Map<K,Collection<V>>> |
toMultimap(@NonNull Function<? super T,? extends K> keySelector,
Function<? super T,? extends V> valueSelector)
|
<K,V> @NonNull Single<Map<K,Collection<V>>> |
toMultimap(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector,
@NonNull Supplier<? extends Map<K,Collection<V>>> mapSupplier,
@NonNull Function<? super K,? extends Collection<? super V>> collectionFactory)
Returns a
Single that emits a single Map (subclass), returned by a specified mapFactory function, that
contains a custom Collection of values, extracted by a specified valueSelector function from
items emitted by the current and finite Observable , and keyed by the keySelector function. |
<K,V> @NonNull Single<Map<K,Collection<V>>> |
toMultimap(@NonNull Function<? super T,? extends K> keySelector,
@NonNull Function<? super T,? extends V> valueSelector,
@NonNull Supplier<Map<K,Collection<V>>> mapSupplier)
|
@NonNull Single<List<T>> |
toSortedList()
|
@NonNull Single<List<T>> |
toSortedList(@NonNull Comparator<? super T> comparator)
|
@NonNull Single<List<T>> |
toSortedList(@NonNull Comparator<? super T> comparator,
int capacityHint)
|
@NonNull Single<List<T>> |
toSortedList(int capacityHint)
|
static <T> @NonNull Observable<T> |
unsafeCreate(@NonNull ObservableSource<T> onSubscribe)
Create an
Observable by wrapping an ObservableSource which has to be implemented according
to the Observable specification derived from the Reactive Streams specification by handling
disposal correctly; no safeguards are provided by the Observable itself. |
@NonNull Observable<T> |
unsubscribeOn(@NonNull Scheduler scheduler)
|
static <T,D> @NonNull Observable<T> |
using(@NonNull Supplier<? extends D> resourceSupplier,
@NonNull Function<? super D,? extends ObservableSource<? extends T>> sourceSupplier,
@NonNull Consumer<? super D> resourceCleanup)
Constructs an
Observable that creates a dependent resource object, an ObservableSource with
that resource and calls the provided resourceDisposer function if this inner source terminates or the
downstream disposes the flow. |
static <T,D> @NonNull Observable<T> |
using(@NonNull Supplier<? extends D> resourceSupplier,
@NonNull Function<? super D,? extends ObservableSource<? extends T>> sourceSupplier,
@NonNull Consumer<? super D> resourceCleanup,
boolean eager)
Constructs an
Observable that creates a dependent resource object, an ObservableSource with
that resource and calls the provided disposer function if this inner source terminates or the
downstream disposes the flow; doing it before these end-states have been reached if eager == true , after otherwise. |
@NonNull Observable<Observable<T>> |
window(long count)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long count,
long skip)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long count,
long skip,
int bufferSize)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
long timeskip,
@NonNull TimeUnit unit)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
long timeskip,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
long timeskip,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
int bufferSize)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
long count)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
long count,
boolean restart)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
long count)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
long count,
boolean restart)
Returns an
Observable that emits windows of items it collects from the current Observable . |
@NonNull Observable<Observable<T>> |
window(long timespan,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler,
long count,
boolean restart,
int bufferSize)
Returns an
Observable that emits windows of items it collects from the current Observable . |
<B> @NonNull Observable<Observable<T>> |
window(@NonNull ObservableSource<B> boundaryIndicator)
Returns an
Observable that emits non-overlapping windows of items it collects from the current Observable
where the boundary of each window is determined by the items emitted from a specified boundary-governing
ObservableSource . |
<B> @NonNull Observable<Observable<T>> |
window(@NonNull ObservableSource<B> boundaryIndicator,
int bufferSize)
Returns an
Observable that emits non-overlapping windows of items it collects from the current Observable
where the boundary of each window is determined by the items emitted from a specified boundary-governing
ObservableSource . |
<U,V> @NonNull Observable<Observable<T>> |
window(@NonNull ObservableSource<U> openingIndicator,
@NonNull Function<? super U,? extends ObservableSource<V>> closingIndicator)
Returns an
Observable that emits windows of items it collects from the current Observable . |
<U,V> @NonNull Observable<Observable<T>> |
window(@NonNull ObservableSource<U> openingIndicator,
@NonNull Function<? super U,? extends ObservableSource<V>> closingIndicator,
int bufferSize)
Returns an
Observable that emits windows of items it collects from the current Observable . |
<R> @NonNull Observable<R> |
withLatestFrom(@NonNull Iterable<? extends ObservableSource<?>> others,
@NonNull Function<? super Object[],R> combiner)
Combines the value emission from the current
Observable with the latest emissions from the
other ObservableSource s via a function to produce the output item. |
<R> @NonNull Observable<R> |
withLatestFrom(@NonNull ObservableSource<?>[] others,
@NonNull Function<? super Object[],R> combiner)
Combines the value emission from the current
Observable with the latest emissions from the
other ObservableSource s via a function to produce the output item. |
<U,R> @NonNull Observable<R> |
withLatestFrom(@NonNull ObservableSource<? extends U> other,
@NonNull BiFunction<? super T,? super U,? extends R> combiner)
Merges the specified
ObservableSource into the current Observable sequence by using the resultSelector
function only when the current Observable emits an item. |
<T1,T2,R> @NonNull Observable<R> |
withLatestFrom(@NonNull ObservableSource<T1> source1,
@NonNull ObservableSource<T2> source2,
@NonNull Function3<? super T,? super T1,? super T2,R> combiner)
Combines the value emission from the current
Observable with the latest emissions from the
other ObservableSource s via a function to produce the output item. |
<T1,T2,T3,R> |
withLatestFrom(@NonNull ObservableSource<T1> source1,
@NonNull ObservableSource<T2> source2,
@NonNull ObservableSource<T3> source3,
@NonNull Function4<? super T,? super T1,? super T2,? super T3,R> combiner)
Combines the value emission from the current
Observable with the latest emissions from the
other ObservableSource s via a function to produce the output item. |
<T1,T2,T3,T4,R> |
withLatestFrom(@NonNull ObservableSource<T1> source1,
@NonNull ObservableSource<T2> source2,
@NonNull ObservableSource<T3> source3,
@NonNull ObservableSource<T4> source4,
@NonNull Function5<? super T,? super T1,? super T2,? super T3,? super T4,R> combiner)
Combines the value emission from the current
Observable with the latest emissions from the
other ObservableSource s via a function to produce the output item. |
static <T> @NonNull Observable<T> |
wrap(@NonNull ObservableSource<T> source)
|
static <T,R> @NonNull Observable<R> |
zip(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an Iterable of other ObservableSource s. |
static <T,R> @NonNull Observable<R> |
zip(@NonNull Iterable<? extends ObservableSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> zipper,
boolean delayError,
int bufferSize)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an Iterable of other ObservableSource s. |
static <T1,T2,R> @NonNull Observable<R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull BiFunction<? super T1,? super T2,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource s. |
static <T1,T2,R> @NonNull Observable<R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull BiFunction<? super T1,? super T2,? extends R> zipper,
boolean delayError)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource s. |
static <T1,T2,R> @NonNull Observable<R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull BiFunction<? super T1,? super T2,? extends R> zipper,
boolean delayError,
int bufferSize)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource s. |
static <T1,T2,T3,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull Function3<? super T1,? super T2,? super T3,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
three items emitted, in sequence, by three other ObservableSource s. |
static <T1,T2,T3,T4,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
four items emitted, in sequence, by four other ObservableSource s. |
static <T1,T2,T3,T4,T5,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
five items emitted, in sequence, by five other ObservableSource s. |
static <T1,T2,T3,T4,T5,T6,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
six items emitted, in sequence, by six other ObservableSource s. |
static <T1,T2,T3,T4,T5,T6,T7,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
seven items emitted, in sequence, by seven other ObservableSource s. |
static <T1,T2,T3,T4,T5,T6,T7,T8,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull ObservableSource<? extends T8> source8,
@NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
eight items emitted, in sequence, by eight other ObservableSource s. |
static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> |
zip(@NonNull ObservableSource<? extends T1> source1,
@NonNull ObservableSource<? extends T2> source2,
@NonNull ObservableSource<? extends T3> source3,
@NonNull ObservableSource<? extends T4> source4,
@NonNull ObservableSource<? extends T5> source5,
@NonNull ObservableSource<? extends T6> source6,
@NonNull ObservableSource<? extends T7> source7,
@NonNull ObservableSource<? extends T8> source8,
@NonNull ObservableSource<? extends T9> source9,
@NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> zipper)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
nine items emitted, in sequence, by nine other ObservableSource s. |
static <T,R> @NonNull Observable<R> |
zipArray(@NonNull Function<? super Object[],? extends R> zipper,
boolean delayError,
int bufferSize,
ObservableSource<? extends T>... sources)
Returns an
Observable that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an array of other ObservableSource s. |
<U,R> @NonNull Observable<R> |
zipWith(@NonNull Iterable<U> other,
@NonNull BiFunction<? super T,? super U,? extends R> zipper)
Returns an
Observable that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable and a specified Iterable sequence. |
<U,R> @NonNull Observable<R> |
zipWith(@NonNull ObservableSource<? extends U> other,
@NonNull BiFunction<? super T,? super U,? extends R> zipper)
Returns an
Observable that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable and another specified ObservableSource . |
<U,R> @NonNull Observable<R> |
zipWith(@NonNull ObservableSource<? extends U> other,
@NonNull BiFunction<? super T,? super U,? extends R> zipper,
boolean delayError)
Returns an
Observable that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable and another specified ObservableSource . |
<U,R> @NonNull Observable<R> |
zipWith(@NonNull ObservableSource<? extends U> other,
@NonNull BiFunction<? super T,? super U,? extends R> zipper,
boolean delayError,
int bufferSize)
Returns an
Observable that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable and another specified ObservableSource . |
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> amb(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
ObservableSource
in an Iterable
of several ObservableSource
s that first either emits an item or sends
a termination notification.
When one of the ObservableSource
s signal an item or terminates first, all subscriptions to the other
ObservableSource
s are disposed.
amb
does not operate by default on a particular Scheduler
.ObservableSource
s signals an error, the error is routed to the global
error handler via RxJavaPlugins.onError(Throwable)
.
T
- the common element typesources
- an Iterable
of ObservableSource
sources competing to react first. A subscription to each source will
occur in the same order as in the Iterable
.Observable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") @SafeVarargs public static <T> @NonNull Observable<T> ambArray(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
in an array of several ObservableSource
s that first either emits an item or sends
a termination notification.
When one of the ObservableSource
s signal an item or terminates first, all subscriptions to the other
ObservableSource
s are disposed.
ambArray
does not operate by default on a particular Scheduler
.ObservableSource
s signals an error, the error is routed to the global
error handler via RxJavaPlugins.onError(Throwable)
.
T
- the common element typesources
- an array of ObservableSource
sources competing to react first. A subscription to each source will
occur in the same order as in the array.Observable
instanceNullPointerException
- if sources
is null
@CheckReturnValue public static int bufferSize()
Delegates to Flowable.bufferSize()
but is public for convenience.
The value can be overridden via system parameter rx3.buffer-size
before the Flowable
class is loaded.
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> combineLatest(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of
the returned ObservableSource
s each time an item is received from any of the returned ObservableSource
s, where this
aggregation is defined by a specified function.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatest
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the returned ObservableSource
sObservable
instanceNullPointerException
- if sources
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,R> @NonNull Observable<R> combineLatest(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> combiner, int bufferSize)
Iterable
of source ObservableSource
s by emitting an item that aggregates the latest values of each of
the returned ObservableSource
s each time an item is received from any of the returned ObservableSource
s, where this
aggregation is defined by a specified function.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided Iterable
of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatest
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the returned ObservableSource
sbufferSize
- the expected number of row combination items to be buffered internallyObservable
instanceNullPointerException
- if sources
or combiner
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> combineLatestArray(@NonNull ObservableSource<? extends T>[] sources, @NonNull Function<? super Object[],? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the returned ObservableSource
s, where this
aggregation is defined by a specified function.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestArray
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if sources
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,R> @NonNull Observable<R> combineLatestArray(@NonNull ObservableSource<? extends T>[] sources, @NonNull Function<? super Object[],? extends R> combiner, int bufferSize)
ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestArray
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sbufferSize
- the expected number of row combination items to be buffered internallyObservable
instanceNullPointerException
- if sources
or combiner
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull BiFunction<? super T1,? super T2,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from either of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull Function3<? super T1,? super T2,? super T3,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceT5
- the element type of the fifth sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
source5
- the fifth source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceT5
- the element type of the fifth sourceT6
- the element type of the sixth sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
source5
- the fifth source ObservableSource
source6
- the sixth source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceT5
- the element type of the fifth sourceT6
- the element type of the sixth sourceT7
- the element type of the seventh sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
source5
- the fifth source ObservableSource
source6
- the sixth source ObservableSource
source7
- the seventh source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,T8,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull ObservableSource<? extends T8> source8, @NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceT5
- the element type of the fifth sourceT6
- the element type of the sixth sourceT7
- the element type of the seventh sourceT8
- the element type of the eighth sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
source5
- the fifth source ObservableSource
source6
- the sixth source ObservableSource
source7
- the seventh source ObservableSource
source8
- the eighth source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
, source8
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> @NonNull Observable<R> combineLatest(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull ObservableSource<? extends T8> source8, @NonNull ObservableSource<? extends T9> source9, @NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of the
ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
combineLatest
does not operate by default on a particular Scheduler
.T1
- the element type of the first sourceT2
- the element type of the second sourceT3
- the element type of the third sourceT4
- the element type of the fourth sourceT5
- the element type of the fifth sourceT6
- the element type of the sixth sourceT7
- the element type of the seventh sourceT8
- the element type of the eighth sourceT9
- the element type of the ninth sourceR
- the combined output typesource1
- the first source ObservableSource
source2
- the second source ObservableSource
source3
- the third source ObservableSource
source4
- the fourth source ObservableSource
source5
- the fifth source ObservableSource
source6
- the sixth source ObservableSource
source7
- the seventh source ObservableSource
source8
- the eighth source ObservableSource
source9
- the ninth source ObservableSource
combiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
, source8
, source9
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> combineLatestArrayDelayError(@NonNull ObservableSource<? extends T>[] sources, @NonNull Function<? super Object[],? extends R> combiner)
ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if sources
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,R> @NonNull Observable<R> combineLatestArrayDelayError(@NonNull ObservableSource<? extends T>[] sources, @NonNull Function<? super Object[],? extends R> combiner, int bufferSize)
ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource
s terminate.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sbufferSize
- the expected number of row combination items to be buffered internallyObservable
instanceNullPointerException
- if sources
or combiner
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> combineLatestDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> combiner)
Iterable
of ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource
s terminate.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestDelayError
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the Iterable
of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sObservable
instanceNullPointerException
- if sources
or combiner
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,R> @NonNull Observable<R> combineLatestDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> combiner, int bufferSize)
Iterable
of ObservableSource
s by emitting an item that aggregates the latest values of each of
the ObservableSource
s each time an item is received from any of the ObservableSource
s, where this
aggregation is defined by a specified function and delays any error from the sources until
all source ObservableSource
s terminate.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
If any of the sources never produces an item but only terminates (normally or with an error), the resulting sequence terminates immediately (normally or with all the errors accumulated till that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of ObservableSource
s is empty, the resulting sequence completes immediately without emitting
any items and without any calls to the combiner function.
combineLatestDelayError
does not operate by default on a particular Scheduler
.T
- the common base type of source valuesR
- the result typesources
- the collection of source ObservableSource
scombiner
- the aggregation function used to combine the items emitted by the ObservableSource
sbufferSize
- the expected number of row combination items to be buffered internallyObservable
instanceNullPointerException
- if sources
or combiner
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concat(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
ObservableSource
provided via an Iterable
sequence into a single sequence
of elements without interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common value type of the sourcessources
- the Iterable
sequence of ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concat(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
Observable
that emits the items emitted by each of the ObservableSource
s emitted by the
ObservableSource
, one after the other, without interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concat(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int bufferSize)
Observable
that emits the items emitted by each of the ObservableSource
s emitted by the outer
ObservableSource
, one after the other, without interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
sbufferSize
- the number of inner ObservableSource
s expected to be buffered.Observable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concat(@NonNull ObservableSource<? extends T> source1, ObservableSource<? extends T> source2)
Observable
that emits the items emitted by two ObservableSource
s, one after the other, without
interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be concatenatedsource2
- an ObservableSource
to be concatenatedObservable
instanceNullPointerException
- if source1
or source2
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concat(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3)
Observable
that emits the items emitted by three ObservableSource
s, one after the other, without
interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be concatenatedsource2
- an ObservableSource
to be concatenatedsource3
- an ObservableSource
to be concatenatedObservable
instanceNullPointerException
- if source1
, source2
or source3
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concat(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3, @NonNull ObservableSource<? extends T> source4)
Observable
that emits the items emitted by four ObservableSource
s, one after the other, without
interleaving them.
concat
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be concatenatedsource2
- an ObservableSource
to be concatenatedsource3
- an ObservableSource
to be concatenatedsource4
- an ObservableSource
to be concatenatedObservable
instanceNullPointerException
- if source1
, source2
, source3
or source4
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> concatArray(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
sources.
Note: named this way because of overload conflict with concat(ObservableSource<ObservableSource>)
concatArray
does not operate by default on a particular Scheduler
.T
- the common base value typesources
- the array of sourcesObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> concatArrayDelayError(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
sources and delays errors from any of them
till all terminate.
concatArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common base value typesources
- the array of sourcesObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public static <T> @NonNull Observable<T> concatArrayEager(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
s eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- an array of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> concatArrayEager(int maxConcurrency, int bufferSize, @NonNull ObservableSource<? extends T>... sources)
ObservableSource
s eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- an array of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrent subscriptions at a time, Integer.MAX_VALUE
is interpreted as indication to subscribe to all sources at oncebufferSize
- the number of elements expected from each ObservableSource
to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public static <T> @NonNull Observable<T> concatArrayEagerDelayError(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
s eagerly into a single stream of values
and delaying any errors until all sources terminate.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s
and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- an array of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> concatArrayEagerDelayError(int maxConcurrency, int bufferSize, @NonNull ObservableSource<? extends T>... sources)
ObservableSource
s eagerly into a single stream of values
and delaying any errors until all sources terminate.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s
and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- an array of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrent subscriptions at a time, Integer.MAX_VALUE
is interpreted as indication to subscribe to all sources at oncebufferSize
- the number of elements expected from each ObservableSource
to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concatDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Iterable
sequence of ObservableSource
s into a single Observable
sequence
by subscribing to each ObservableSource
, one after the other, one at a time and delays any errors till
the all inner ObservableSource
s terminate.
concatDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable
sequence of ObservableSource
sObservable
with the concatenating behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
sequence of ObservableSource
s into a single Observable
sequence
by subscribing to each inner ObservableSource
, one after the other, one at a time and delays any errors till the
all inner and the outer ObservableSource
s terminate.
concatDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the ObservableSource
sequence of ObservableSource
sObservable
with the concatenating behaviorNullPointerException
- if sources
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> concatDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int bufferSize, boolean tillTheEnd)
ObservableSource
sequence of ObservableSource
s into a single sequence by subscribing to each inner ObservableSource
,
one after the other, one at a time and delays any errors till the all inner and the outer ObservableSource
s terminate.
concatDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the ObservableSource
sequence of ObservableSource
sbufferSize
- the number of inner ObservableSource
s expected to be bufferedtillTheEnd
- if true
, exceptions from the outer and all inner ObservableSource
s are delayed to the end
if false
, exception from the outer ObservableSource
is delayed till the active ObservableSource
terminatesObservable
with the concatenating behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEager(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
ObservableSource
s eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEager(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
ObservableSource
s eagerly into a single stream of values and
runs a limited number of inner sequences at once.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrently running inner ObservableSource
s; Integer.MAX_VALUE
is interpreted as all inner ObservableSource
s can be active at the same timebufferSize
- the number of elements expected from each inner ObservableSource
to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEager(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
sequence of ObservableSource
s eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
emitted source ObservableSource
s as they are observed. The operator buffers the values emitted by these
ObservableSource
s and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEager(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
ObservableSource
sequence of ObservableSource
s eagerly into a single stream of values
and runs a limited number of inner sequences at once.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
emitted source ObservableSource
s as they are observed. The operator buffers the values emitted by these
ObservableSource
s and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrently running inner ObservableSource
s; Integer.MAX_VALUE
is interpreted as all inner ObservableSource
s can be active at the same timebufferSize
- the number of inner ObservableSource
expected to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEagerDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
ObservableSource
s eagerly into a single stream of values,
delaying errors until all the inner sequences terminate.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEagerDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
ObservableSource
s eagerly into a single stream of values,
delaying errors until all the inner sequences terminate and runs a limited number of inner
sequences at once.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
ObservableSource
s. The operator buffers the values emitted by these ObservableSource
s and then drains them
in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrently running inner ObservableSource
s; Integer.MAX_VALUE
is interpreted as all inner ObservableSource
s can be active at the same timebufferSize
- the number of elements expected from each inner ObservableSource
to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEagerDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
sequence of ObservableSource
s eagerly into a single stream of values,
delaying errors until all the inner and the outer sequence terminate.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
emitted source ObservableSource
s as they are observed. The operator buffers the values emitted by these
ObservableSource
s and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> concatEagerDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
ObservableSource
sequence of ObservableSource
s eagerly into a single stream of values,
delaying errors until all the inner and the outer sequence terminate and runs a limited number of inner sequences at once.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
emitted source ObservableSource
s as they are observed. The operator buffers the values emitted by these
ObservableSource
s and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of ObservableSource
s that need to be eagerly concatenatedmaxConcurrency
- the maximum number of concurrently running inner ObservableSource
s; Integer.MAX_VALUE
is interpreted as all inner ObservableSource
s can be active at the same timebufferSize
- the number of inner ObservableSource
expected to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> create(@NonNull ObservableOnSubscribe<T> source)
Observable
) that bridges the reactive world with the callback-style world.
Example:
Observable.<Event>create(emitter -> {
Callback listener = new Callback() {
@Override
public void onEvent(Event e) {
emitter.onNext(e);
if (e.isLast()) {
emitter.onComplete();
}
}
@Override
public void onFailure(Exception e) {
emitter.onError(e);
}
};
AutoCloseable c = api.someMethod(listener);
emitter.setCancellable(c::close);
});
Whenever an Observer
subscribes to the returned Observable
, the provided
ObservableOnSubscribe
callback is invoked with a fresh instance of an ObservableEmitter
that will interact only with that specific Observer
. If this Observer
disposes the flow (making ObservableEmitter.isDisposed()
return true
),
other observers subscribed to the same returned Observable
are not affected.
You should call the ObservableEmitter
's onNext
, onError
and onComplete
methods in a serialized fashion. The
rest of its methods are thread-safe.
create
does not operate by default on a particular Scheduler
.T
- the element typesource
- the emitter that is called when an Observer
subscribes to the returned Observable
Observable
instanceNullPointerException
- if source
is null
ObservableOnSubscribe
,
ObservableEmitter
,
Cancellable
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> defer(@NonNull Supplier<? extends ObservableSource<? extends T>> supplier)
Observable
that calls an ObservableSource
factory to create an ObservableSource
for each new Observer
that subscribes. That is, for each subscriber, the actual ObservableSource
that subscriber observes is
determined by the factory function.
The defer
operator allows you to defer or delay emitting items from an ObservableSource
until such time as an
Observer
subscribes to the ObservableSource
. This allows an Observer
to easily obtain updates or a
refreshed version of the sequence.
defer
does not operate by default on a particular Scheduler
.T
- the type of the items emitted by the ObservableSource
supplier
- the ObservableSource
factory function to invoke for each Observer
that subscribes to the
resulting Observable
Observable
instanceNullPointerException
- if supplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> empty()
Observable
that emits no items to the Observer
and immediately invokes its
onComplete
method.
empty
does not operate by default on a particular Scheduler
.T
- the type of the items (ostensibly) emitted by the Observable
Observable
instance@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> error(@NonNull Supplier<? extends Throwable> supplier)
Observable
that invokes an Observer
's onError
method when the
Observer
subscribes to it.
error
does not operate by default on a particular Scheduler
.T
- the type of the items (ostensibly) emitted by the Observable
supplier
- a Supplier
factory to return a Throwable
for each individual Observer
Observable
instanceNullPointerException
- if supplier
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> error(@NonNull Throwable throwable)
Observable
that invokes an Observer
's onError
method when the
Observer
subscribes to it.
error
does not operate by default on a particular Scheduler
.T
- the type of the items (ostensibly) emitted by the Observable
throwable
- the particular Throwable
to pass to onError
Observable
instanceNullPointerException
- if throwable
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromAction(@NonNull Action action)
Observable
instance that runs the given Action
for each Observer
and
emits either its exception or simply completes.
fromAction
does not operate by default on a particular Scheduler
.Action
throws an exception, the respective Throwable
is
delivered to the downstream via Observer.onError(Throwable)
,
except when the downstream has canceled the resulting Observable
source.
In this latter case, the Throwable
is delivered to the global error handler via
RxJavaPlugins.onError(Throwable)
as an UndeliverableException
.
T
- the target typeaction
- the Action
to run for each Observer
Observable
instanceNullPointerException
- if action
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> fromArray(@NonNull T... items)
ObservableSource
that emits the items in the array.
fromArray
does not operate by default on a particular Scheduler
.T
- the type of items in the array and the type of items to be emitted by the resulting Observable
items
- the array of elementsObservable
instanceNullPointerException
- if items
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromCallable(@NonNull Callable<? extends T> callable)
Observable
that, when an observer subscribes to it, invokes a function you specify and then
emits the value returned from that function.
This allows you to defer the execution of the function you specify until an observer subscribes to the
Observable
. That is to say, it makes the function "lazy."
fromCallable
does not operate by default on a particular Scheduler
.Callable
throws an exception, the respective Throwable
is
delivered to the downstream via Observer.onError(Throwable)
,
except when the downstream has disposed the current Observable
source.
In this latter case, the Throwable
is delivered to the global error handler via
RxJavaPlugins.onError(Throwable)
as an UndeliverableException
.
T
- the type of the item returned by the Callable
and emitted by the Observable
callable
- a function, the execution of which should be deferred; fromCallable
will invoke this
function only when an observer subscribes to the Observable
that fromCallable
returnsObservable
instanceNullPointerException
- if callable
is null
defer(Supplier)
,
fromSupplier(Supplier)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromCompletable(@NonNull CompletableSource completableSource)
CompletableSource
into an Observable
.
fromCompletable
does not operate by default on a particular Scheduler
.T
- the target typecompletableSource
- the CompletableSource
to convert fromObservable
instanceNullPointerException
- if completableSource
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromFuture(@NonNull Future<? extends T> future)
Future
into an Observable
.
The operator calls Future.get()
, which is a blocking method, on the subscription thread.
It is recommended applying subscribeOn(Scheduler)
to move this blocking wait to a
background thread, and if the Scheduler
supports it, interrupt the wait when the flow
is disposed.
Unlike 1.x, disposing the Observable
won't cancel the future. If necessary, one can use composition to achieve the
cancellation effect: futureObservableSource.doOnDispose(() -> future.cancel(true));
.
Also note that this operator will consume a CompletionStage
-based Future
subclass (such as
CompletableFuture
) in a blocking manner as well. Use the fromCompletionStage(CompletionStage)
operator to convert and consume such sources in a non-blocking fashion instead.
fromFuture
does not operate by default on a particular Scheduler
.T
- the type of object that the Future
returns, and also the type of item to be emitted by
the resulting Observable
future
- the source Future
Observable
instanceNullPointerException
- if future
is null
fromCompletionStage(CompletionStage)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromFuture(@NonNull Future<? extends T> future, long timeout, @NonNull TimeUnit unit)
Future
into an Observable
, with a timeout on the Future
.
The operator calls Future.get(long, TimeUnit)
, which is a blocking method, on the subscription thread.
It is recommended applying subscribeOn(Scheduler)
to move this blocking wait to a
background thread, and if the Scheduler
supports it, interrupt the wait when the flow
is disposed.
Unlike 1.x, disposing the Observable
won't cancel the future. If necessary, one can use composition to achieve the
cancellation effect: futureObservableSource.doOnDispose(() -> future.cancel(true));
.
Also note that this operator will consume a CompletionStage
-based Future
subclass (such as
CompletableFuture
) in a blocking manner as well. Use the fromCompletionStage(CompletionStage)
operator to convert and consume such sources in a non-blocking fashion instead.
fromFuture
does not operate by default on a particular Scheduler
.T
- the type of object that the Future
returns, and also the type of item to be emitted by
the resulting Observable
future
- the source Future
timeout
- the maximum time to wait before calling get
unit
- the TimeUnit
of the timeout
argumentObservable
instanceNullPointerException
- if future
or unit
is null
fromCompletionStage(CompletionStage)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromIterable(@NonNull Iterable<? extends T> source)
Iterable
sequence into an Observable
that emits the items in the sequence.
fromIterable
does not operate by default on a particular Scheduler
.T
- the type of items in the Iterable
sequence and the type of items to be emitted by the
resulting Observable
source
- the source Iterable
sequenceObservable
instanceNullPointerException
- if source
is null
fromStream(Stream)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromMaybe(@NonNull MaybeSource<T> maybe)
Observable
instance that when subscribed to, subscribes to the MaybeSource
instance and
emits onSuccess
as a single item or forwards any onComplete
or
onError
signal.
fromMaybe
does not operate by default on a particular Scheduler
.T
- the value type of the MaybeSource
elementmaybe
- the MaybeSource
instance to subscribe to, not null
Observable
instanceNullPointerException
- if maybe
is null
@BackpressureSupport(value=UNBOUNDED_IN) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromPublisher(@NonNull Publisher<? extends T> publisher)
Publisher
into an Observable
.
The Publisher
must follow the
Reactive-Streams specification.
Violating the specification may result in undefined behavior.
If possible, use create(ObservableOnSubscribe)
to create a
source-like Observable
instead.
Note that even though Publisher
appears to be a functional interface, it
is not recommended to implement it through a lambda as the specification requires
state management that is not achievable with a stateless lambda.
publisher
is consumed in an unbounded fashion without applying any
backpressure to it.fromPublisher
does not operate by default on a particular Scheduler
.T
- the value type of the flowpublisher
- the Publisher
to convertObservable
instanceNullPointerException
- if publisher
is null
create(ObservableOnSubscribe)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromRunnable(@NonNull Runnable run)
Observable
instance that runs the given Runnable
for each Observer
and
emits either its unchecked exception or simply completes.
If the code to be wrapped needs to throw a checked or more broader Throwable
exception, that
exception has to be converted to an unchecked exception by the wrapped code itself. Alternatively,
use the fromAction(Action)
method which allows the wrapped code to throw any Throwable
exception and will signal it to observers as-is.
fromRunnable
does not operate by default on a particular Scheduler
.Runnable
throws an exception, the respective Throwable
is
delivered to the downstream via Observer.onError(Throwable)
,
except when the downstream has canceled the resulting Observable
source.
In this latter case, the Throwable
is delivered to the global error handler via
RxJavaPlugins.onError(Throwable)
as an UndeliverableException
.
T
- the target typerun
- the Runnable
to run for each Observer
Observable
instanceNullPointerException
- if run
is null
fromAction(Action)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromSingle(@NonNull SingleSource<T> source)
Observable
instance that when subscribed to, subscribes to the SingleSource
instance and
emits onSuccess
as a single item or forwards the onError
signal.
fromSingle
does not operate by default on a particular Scheduler
.T
- the value type of the SingleSource
elementsource
- the SingleSource
instance to subscribe to, not null
Observable
instanceNullPointerException
- if source
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> fromSupplier(@NonNull Supplier<? extends T> supplier)
Observable
that, when an observer subscribes to it, invokes a supplier function you specify and then
emits the value returned from that function.
This allows you to defer the execution of the function you specify until an observer subscribes to the
Observable
. That is to say, it makes the function "lazy."
fromSupplier
does not operate by default on a particular Scheduler
.Supplier
throws an exception, the respective Throwable
is
delivered to the downstream via Observer.onError(Throwable)
,
except when the downstream has disposed the current Observable
source.
In this latter case, the Throwable
is delivered to the global error handler via
RxJavaPlugins.onError(Throwable)
as an UndeliverableException
.
T
- the type of the item emitted by the Observable
supplier
- a function, the execution of which should be deferred; fromSupplier
will invoke this
function only when an observer subscribes to the Observable
that fromSupplier
returnsObservable
instanceNullPointerException
- if supplier
is null
defer(Supplier)
,
fromCallable(Callable)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> generate(@NonNull Consumer<Emitter<T>> generator)
Note that the Emitter.onNext(T)
, Emitter.onError(java.lang.Throwable)
and
Emitter.onComplete()
methods provided to the function via the Emitter
instance should be called synchronously,
never concurrently and only while the function body is executing. Calling them from multiple threads
or outside the function call is not supported and leads to an undefined behavior.
generate
does not operate by default on a particular Scheduler
.T
- the generated value typegenerator
- the Consumer
called in a loop after a downstream Observer
has
subscribed. The callback then should call onNext
, onError
or
onComplete
to signal a value or a terminal event. Signaling multiple onNext
in a call will make the operator signal IllegalStateException
.Observable
instanceNullPointerException
- if generator
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,S> @NonNull Observable<T> generate(@NonNull Supplier<S> initialState, @NonNull BiConsumer<S,Emitter<T>> generator)
Note that the Emitter.onNext(T)
, Emitter.onError(java.lang.Throwable)
and
Emitter.onComplete()
methods provided to the function via the Emitter
instance should be called synchronously,
never concurrently and only while the function body is executing. Calling them from multiple threads
or outside the function call is not supported and leads to an undefined behavior.
generate
does not operate by default on a particular Scheduler
.S
- the type of the per-Observer
stateT
- the generated value typeinitialState
- the Supplier
to generate the initial state for each Observer
generator
- the BiConsumer
called in a loop after a downstream Observer
has
subscribed. The callback then should call onNext
, onError
or
onComplete
to signal a value or a terminal event. Signaling multiple onNext
in a call will make the operator signal IllegalStateException
.Observable
instanceNullPointerException
- if initialState
or generator
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,S> @NonNull Observable<T> generate(@NonNull Supplier<S> initialState, @NonNull BiConsumer<S,Emitter<T>> generator, @NonNull Consumer<? super S> disposeState)
Note that the Emitter.onNext(T)
, Emitter.onError(java.lang.Throwable)
and
Emitter.onComplete()
methods provided to the function via the Emitter
instance should be called synchronously,
never concurrently and only while the function body is executing. Calling them from multiple threads
or outside the function call is not supported and leads to an undefined behavior.
generate
does not operate by default on a particular Scheduler
.S
- the type of the per-Observer
stateT
- the generated value typeinitialState
- the Supplier
to generate the initial state for each Observer
generator
- the BiConsumer
called in a loop after a downstream Observer
has
subscribed. The callback then should call onNext
, onError
or
onComplete
to signal a value or a terminal event. Signaling multiple onNext
in a call will make the operator signal IllegalStateException
.disposeState
- the Consumer
that is called with the current state when the generator
terminates the sequence or it gets disposedObservable
instanceNullPointerException
- if initialState
, generator
or disposeState
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,S> @NonNull Observable<T> generate(@NonNull Supplier<S> initialState, @NonNull BiFunction<S,Emitter<T>,S> generator)
Note that the Emitter.onNext(T)
, Emitter.onError(java.lang.Throwable)
and
Emitter.onComplete()
methods provided to the function via the Emitter
instance should be called synchronously,
never concurrently and only while the function body is executing. Calling them from multiple threads
or outside the function call is not supported and leads to an undefined behavior.
generate
does not operate by default on a particular Scheduler
.S
- the type of the per-Observer
stateT
- the generated value typeinitialState
- the Supplier
to generate the initial state for each Observer
generator
- the BiConsumer
called in a loop after a downstream Observer
has
subscribed. The callback then should call onNext
, onError
or
onComplete
to signal a value or a terminal event and should return a (new) state for
the next invocation. Signaling multiple onNext
in a call will make the operator signal IllegalStateException
.Observable
instanceNullPointerException
- if initialState
or generator
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,S> @NonNull Observable<T> generate(@NonNull Supplier<S> initialState, @NonNull BiFunction<S,Emitter<T>,S> generator, @NonNull Consumer<? super S> disposeState)
Note that the Emitter.onNext(T)
, Emitter.onError(java.lang.Throwable)
and
Emitter.onComplete()
methods provided to the function via the Emitter
instance should be called synchronously,
never concurrently and only while the function body is executing. Calling them from multiple threads
or outside the function call is not supported and leads to an undefined behavior.
generate
does not operate by default on a particular Scheduler
.S
- the type of the per-Observer
stateT
- the generated value typeinitialState
- the Supplier
to generate the initial state for each Observer
generator
- the BiConsumer
called in a loop after a downstream Observer
has
subscribed. The callback then should call onNext
, onError
or
onComplete
to signal a value or a terminal event and should return a (new) state for
the next invocation. Signaling multiple onNext
in a call will make the operator signal IllegalStateException
.disposeState
- the Consumer
that is called with the current state when the generator
terminates the sequence or it gets disposedObservable
instanceNullPointerException
- if initialState
, generator
or disposeState
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public static @NonNull Observable<Long> interval(long initialDelay, long period, @NonNull TimeUnit unit)
Observable
that emits a 0L
after the initialDelay
and ever increasing numbers
after each period
of time thereafter.
interval
operates by default on the computation
Scheduler
.initialDelay
- the initial delay time to wait before emitting the first value of 0Lperiod
- the period of time between emissions of the subsequent numbersunit
- the time unit for both initialDelay
and period
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public static @NonNull Observable<Long> interval(long initialDelay, long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits a 0L
after the initialDelay
and ever increasing numbers
after each period
of time thereafter, on a specified Scheduler
.
Scheduler
this operator will use.initialDelay
- the initial delay time to wait before emitting the first value of 0Lperiod
- the period of time between emissions of the subsequent numbersunit
- the time unit for both initialDelay
and period
scheduler
- the Scheduler
on which the waiting happens and items are emittedObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public static @NonNull Observable<Long> interval(long period, @NonNull TimeUnit unit)
Observable
that emits a sequential number every specified interval of time.
interval
operates by default on the computation
Scheduler
.period
- the period size in time units (see below)unit
- time units to use for the interval sizeObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public static @NonNull Observable<Long> interval(long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits a sequential number every specified interval of time, on a
specified Scheduler
.
Scheduler
this operator will use.period
- the period size in time units (see below)unit
- time units to use for the interval sizescheduler
- the Scheduler
to use for scheduling the itemsObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="io.reactivex:computation") public static @NonNull Observable<Long> intervalRange(long start, long count, long initialDelay, long period, @NonNull TimeUnit unit)
The sequence completes immediately after the last value (start + count - 1) has been reached.
intervalRange
by default operates on the computation
Scheduler
.start
- that start value of the rangecount
- the number of values to emit in total, if zero, the operator emits an onComplete
after the initial delay.initialDelay
- the initial delay before signaling the first value (the start)period
- the period between subsequent valuesunit
- the unit of measure of the initialDelay
and period
amountsObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is negative, or if start
+ count
− 1 exceeds
Long.MAX_VALUE
range(int, int)
@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public static @NonNull Observable<Long> intervalRange(long start, long count, long initialDelay, long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
The sequence completes immediately after the last value (start + count - 1) has been reached.
*
Scheduler
.start
- that start value of the rangecount
- the number of values to emit in total, if zero, the operator emits an onComplete
after the initial delay.initialDelay
- the initial delay before signaling the first value (the start)period
- the period between subsequent valuesunit
- the unit of measure of the initialDelay
and period
amountsscheduler
- the target scheduler where the values and terminal signals will be emittedObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is negative, or if start
+ count
− 1 exceeds
Long.MAX_VALUE
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item)
Observable
that signals the given (constant reference) item and then completes.
Note that the item is taken and re-emitted as is and not computed by any means by just
. Use fromCallable(Callable)
to generate a single item on demand (when Observer
s subscribe to it).
See the multi-parameter overloads of just
to emit more than one (constant reference) items one after the other.
Use fromArray(Object...)
to emit an arbitrary number of items that are known upfront.
To emit the items of an Iterable
sequence (such as a List
), use fromIterable(Iterable)
.
just
does not operate by default on a particular Scheduler
.T
- the type of that itemitem
- the item to emitObservable
instanceNullPointerException
- if item
is null
just(Object, Object)
,
fromCallable(Callable)
,
fromArray(Object...)
,
fromIterable(Iterable)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemObservable
instanceNullPointerException
- if item1
or item2
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemObservable
instanceNullPointerException
- if item1
, item2
or item3
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
or item4
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
or item5
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemitem6
- sixth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
, item5
or item6
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemitem6
- sixth itemitem7
- seventh itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
, item5
, item6
or item7
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7, @NonNull T item8)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemitem6
- sixth itemitem7
- seventh itemitem8
- eighth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
, item5
, item6
item7
or item8
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7, @NonNull T item8, @NonNull T item9)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemitem6
- sixth itemitem7
- seventh itemitem8
- eighth itemitem9
- ninth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
, item5
, item6
item7
, item8
or item9
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Observable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7, @NonNull T item8, @NonNull T item9, @NonNull T item10)
Observable
that emits those items.
just
does not operate by default on a particular Scheduler
.T
- the type of these itemsitem1
- first itemitem2
- second itemitem3
- third itemitem4
- fourth itemitem5
- fifth itemitem6
- sixth itemitem7
- seventh itemitem8
- eighth itemitem9
- ninth itemitem10
- tenth itemObservable
instanceNullPointerException
- if item1
, item2
, item3
,
item4
, item5
, item6
item7
, item8
, item9
or item10
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
Iterable
of ObservableSource
s into one Observable
, without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource
s.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Iterable, int, int)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- the Iterable
of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlybufferSize
- the number of items expected from each inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positivemergeDelayError(Iterable, int, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> mergeArray(int maxConcurrency, int bufferSize, @NonNull ObservableSource<? extends T>... sources)
ObservableSource
s into one Observable
, without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource
s.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
mergeArray
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeArrayDelayError(int, int, ObservableSource...)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- the array of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlybufferSize
- the number of items expected from each inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positivemergeArrayDelayError(int, int, ObservableSource...)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Iterable
of ObservableSource
s into one Observable
, without any transformation.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Iterable)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- the Iterable
of ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
mergeDelayError(Iterable)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency)
Iterable
of ObservableSource
s into one Observable
, without any transformation, while limiting the
number of concurrent subscriptions to these ObservableSource
s.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Iterable, int)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- the Iterable
of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
is less than or equal to 0mergeDelayError(Iterable, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
that emits ObservableSource
s into a single Observable
that emits the items emitted by
those ObservableSource
s, without any transformation.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(ObservableSource)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
mergeDelayError(ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int maxConcurrency)
ObservableSource
that emits ObservableSource
s into a single Observable
that emits the items emitted by
those ObservableSource
s, without any transformation, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
You can combine the items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(ObservableSource, int)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
is non-positivemergeDelayError(ObservableSource, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2)
ObservableSource
s into a single Observable
, without any transformation.
You can combine items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(ObservableSource, ObservableSource)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
or source2
is null
mergeDelayError(ObservableSource, ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3)
ObservableSource
s into a single Observable
, without any transformation.
You can combine items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(ObservableSource, ObservableSource, ObservableSource)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedsource3
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
, source2
or source3
is null
mergeDelayError(ObservableSource, ObservableSource, ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> merge(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3, @NonNull ObservableSource<? extends T> source4)
ObservableSource
s into a single Observable
, without any transformation.
You can combine items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(ObservableSource, ObservableSource, ObservableSource, ObservableSource)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedsource3
- an ObservableSource
to be mergedsource4
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
, source2
, source3
or source4
is null
mergeDelayError(ObservableSource, ObservableSource, ObservableSource, ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> mergeArray(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
s into one Observable
, without any transformation.
You can combine items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the merge
method.
mergeArray
does not operate by default on a particular Scheduler
.ObservableSource
s signal a Throwable
via onError
, the resulting
Observable
terminates with that Throwable
and all other source ObservableSource
s are disposed.
If more than one ObservableSource
signals an error, the resulting Observable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Observable
has been disposed or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeArrayDelayError(ObservableSource...)
to merge sources and terminate only when all source ObservableSource
s
have completed or failed with an error.
T
- the common element base typesources
- the array of ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
mergeArrayDelayError(ObservableSource...)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources)
Iterable
of ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the returned ObservableSource
s without being interrupted by an error
notification from one of them.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable
of ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency, int bufferSize)
Iterable
of ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the returned ObservableSource
s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource
s.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable
of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlybufferSize
- the number of items expected from each inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> mergeArrayDelayError(int maxConcurrency, int bufferSize, @NonNull ObservableSource<? extends T>... sources)
ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the ObservableSource
s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource
s.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the array of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlybufferSize
- the number of items expected from each inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, int maxConcurrency)
Iterable
of ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the returned ObservableSource
s without being interrupted by an error
notification from one of them, while limiting the number of concurrent subscriptions to these ObservableSource
s.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable
of ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
that emits ObservableSource
s into one Observable
, in a way that allows an Observer
to
receive all successfully emitted items from all of the emitted ObservableSource
s without being interrupted by
an error notification from one of them.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int maxConcurrency)
ObservableSource
that emits ObservableSource
s into one Observable
, in a way that allows an Observer
to
receive all successfully emitted items from all of the emitted ObservableSource
s without being interrupted by
an error notification from one of them, while limiting the
number of concurrent subscriptions to these ObservableSource
s.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- an ObservableSource
that emits ObservableSource
smaxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2)
ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the ObservableSource
s without being interrupted by an error
notification from one of them.
This behaves like merge(ObservableSource, ObservableSource)
except that if any of the merged ObservableSource
s
notify of an error via onError
, mergeDelayError
will refrain from
propagating that error notification until all of the merged ObservableSource
s have finished emitting items.
Even if both merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
or source2
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3)
ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from all of the ObservableSource
s without being interrupted by an error
notification from one of them.
This behaves like merge(ObservableSource, ObservableSource, ObservableSource)
except that if any of the merged
ObservableSource
s notify of an error via onError
, mergeDelayError
will refrain
from propagating that error notification until all of the merged ObservableSource
s have finished emitting
items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedsource3
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
, source2
or source3
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> mergeDelayError(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull ObservableSource<? extends T> source3, @NonNull ObservableSource<? extends T> source4)
ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from all of the ObservableSource
s without being interrupted by an error
notification from one of them.
This behaves like merge(ObservableSource, ObservableSource, ObservableSource, ObservableSource)
except that if any of
the merged ObservableSource
s notify of an error via onError
, mergeDelayError
will refrain from propagating that error notification until all of the merged ObservableSource
s have finished
emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- an ObservableSource
to be mergedsource2
- an ObservableSource
to be mergedsource3
- an ObservableSource
to be mergedsource4
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if source1
, source2
, source3
or source4
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Observable<T> mergeArrayDelayError(@NonNull ObservableSource<? extends T>... sources)
ObservableSource
s into one Observable
, in a way that allows an Observer
to receive all
successfully emitted items from each of the ObservableSource
s without being interrupted by an error
notification from one of them.
This behaves like merge(ObservableSource)
except that if any of the merged ObservableSource
s notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged ObservableSource
s have finished emitting items.
Even if multiple merged ObservableSource
s send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Observer
s once.
mergeArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the array of ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> never()
Observable
that never sends any items or notifications to an Observer
.
The returned Observable
is useful primarily for testing purposes.
never
does not operate by default on a particular Scheduler
.T
- the type of items (not) emitted by the Observable
Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static @NonNull Observable<Integer> range(int start, int count)
Observable
that emits a sequence of Integer
s within a specified range.
range
does not operate by default on a particular Scheduler
.start
- the value of the first Integer
in the sequencecount
- the number of sequential Integer
s to generateObservable
instanceIllegalArgumentException
- if count
is negative, or if start
+ count
− 1 exceeds
Integer.MAX_VALUE
rangeLong(long, long)
,
intervalRange(long, long, long, long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static @NonNull Observable<Long> rangeLong(long start, long count)
Observable
that emits a sequence of Long
s within a specified range.
rangeLong
does not operate by default on a particular Scheduler
.start
- the value of the first Long
in the sequencecount
- the number of sequential Long
s to generateObservable
instanceIllegalArgumentException
- if count
is negative, or if start
+ count
− 1 exceeds
Long.MAX_VALUE
intervalRange(long, long, long, long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2)
Single
that emits a Boolean
value that indicates whether two ObservableSource
sequences are the
same by comparing the items emitted by each ObservableSource
pairwise.
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each ObservableSource
source1
- the first ObservableSource
to comparesource2
- the second ObservableSource
to compareSingle
instanceNullPointerException
- if source1
or source2
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull BiPredicate<? super T,? super T> isEqual)
Single
that emits a Boolean
value that indicates whether two ObservableSource
sequences are the
same by comparing the items emitted by each ObservableSource
pairwise based on the results of a specified
equality function.
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each ObservableSource
source1
- the first ObservableSource
to comparesource2
- the second ObservableSource
to compareisEqual
- a function used to compare items emitted by each ObservableSource
Single
instanceNullPointerException
- if source1
, source2
or isEqual
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, @NonNull BiPredicate<? super T,? super T> isEqual, int bufferSize)
Single
that emits a Boolean
value that indicates whether two ObservableSource
sequences are the
same by comparing the items emitted by each ObservableSource
pairwise based on the results of a specified
equality function.
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each ObservableSource
source1
- the first ObservableSource
to comparesource2
- the second ObservableSource
to compareisEqual
- a function used to compare items emitted by each ObservableSource
bufferSize
- the number of items expected from the first and second source ObservableSource
to be bufferedSingle
instanceNullPointerException
- if source1
, source2
or isEqual
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull ObservableSource<? extends T> source1, @NonNull ObservableSource<? extends T> source2, int bufferSize)
Single
that emits a Boolean
value that indicates whether two ObservableSource
sequences are the
same by comparing the items emitted by each ObservableSource
pairwise.
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each ObservableSource
source1
- the first ObservableSource
to comparesource2
- the second ObservableSource
to comparebufferSize
- the number of items expected from the first and second source ObservableSource
to be bufferedSingle
instanceNullPointerException
- if source1
or source2
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> switchOnNext(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int bufferSize)
ObservableSource
that emits ObservableSource
s into an Observable
that emits the items emitted by the
most recently emitted of those ObservableSource
s.
switchOnNext
subscribes to an ObservableSource
that emits ObservableSource
s. Each time it observes one of
these emitted ObservableSource
s, the ObservableSource
returned by switchOnNext
begins emitting the items
emitted by that ObservableSource
. When a new inner ObservableSource
is emitted, switchOnNext
stops emitting items
from the earlier-emitted ObservableSource
and begins emitting items from the new one.
The resulting Observable
completes if both the outer ObservableSource
and the last inner ObservableSource
, if any, complete.
If the outer ObservableSource
signals an onError
, the inner ObservableSource
is disposed and the error delivered in-sequence.
switchOnNext
does not operate by default on a particular Scheduler
.T
- the item typesources
- the ObservableSource
that emits ObservableSource
sbufferSize
- the expected number of items to cache from the inner ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> switchOnNext(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
that emits ObservableSource
s into an Observable
that emits the items emitted by the
most recently emitted of those ObservableSource
s.
switchOnNext
subscribes to an ObservableSource
that emits ObservableSource
s. Each time it observes one of
these emitted ObservableSource
s, the ObservableSource
returned by switchOnNext
begins emitting the items
emitted by that ObservableSource
. When a new inner ObservableSource
is emitted, switchOnNext
stops emitting items
from the earlier-emitted ObservableSource
and begins emitting items from the new one.
The resulting Observable
completes if both the outer ObservableSource
and the last inner ObservableSource
, if any, complete.
If the outer ObservableSource
signals an onError
, the inner ObservableSource
is disposed and the error delivered in-sequence.
switchOnNext
does not operate by default on a particular Scheduler
.T
- the item typesources
- the ObservableSource
that emits ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> switchOnNextDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources)
ObservableSource
that emits ObservableSource
s into an Observable
that emits the items emitted by the
most recently emitted of those ObservableSource
s and delays any exception until all ObservableSource
s terminate.
switchOnNext
subscribes to an ObservableSource
that emits ObservableSource
s. Each time it observes one of
these emitted ObservableSource
s, the ObservableSource
returned by switchOnNext
begins emitting the items
emitted by that ObservableSource
. When a new inner ObservableSource
is emitted, switchOnNext
stops emitting items
from the earlier-emitted ObservableSource
and begins emitting items from the new one.
The resulting Observable
completes if both the main ObservableSource
and the last inner ObservableSource
, if any, complete.
If the main ObservableSource
signals an onError
, the termination of the last inner ObservableSource
will emit that error as is
or wrapped into a CompositeException
along with the other possible errors the former inner ObservableSource
s signaled.
switchOnNextDelayError
does not operate by default on a particular Scheduler
.T
- the item typesources
- the ObservableSource
that emits ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> switchOnNextDelayError(@NonNull ObservableSource<? extends ObservableSource<? extends T>> sources, int bufferSize)
ObservableSource
that emits ObservableSource
s into an Observable
that emits the items emitted by the
most recently emitted of those ObservableSource
s and delays any exception until all ObservableSource
s terminate.
switchOnNext
subscribes to an ObservableSource
that emits ObservableSource
s. Each time it observes one of
these emitted ObservableSource
s, the ObservableSource
returned by switchOnNext
begins emitting the items
emitted by that ObservableSource
. When a new inner ObservableSource
is emitted, switchOnNext
stops emitting items
from the earlier-emitted ObservableSource
and begins emitting items from the new one.
The resulting Observable
completes if both the main ObservableSource
and the last inner ObservableSource
, if any, complete.
If the main ObservableSource
signals an onError
, the termination of the last inner ObservableSource
will emit that error as is
or wrapped into a CompositeException
along with the other possible errors the former inner ObservableSource
s signaled.
switchOnNextDelayError
does not operate by default on a particular Scheduler
.T
- the item typesources
- the ObservableSource
that emits ObservableSource
sbufferSize
- the expected number of items to cache from the inner ObservableSource
sObservable
instanceNullPointerException
- if sources
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public static @NonNull Observable<Long> timer(long delay, @NonNull TimeUnit unit)
Observable
that emits 0L
after a specified delay, and then completes.
timer
operates by default on the computation
Scheduler
.delay
- the initial delay before emitting a single 0L
unit
- time units to use for delay
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public static @NonNull Observable<Long> timer(long delay, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits 0L
after a specified delay, on a specified Scheduler
, and then
completes.
Scheduler
this operator will use.delay
- the initial delay before emitting a single 0Lunit
- time units to use for delay
scheduler
- the Scheduler
to use for scheduling the itemObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> unsafeCreate(@NonNull ObservableSource<T> onSubscribe)
Observable
by wrapping an ObservableSource
which has to be implemented according
to the Observable
specification derived from the Reactive Streams specification by handling
disposal correctly; no safeguards are provided by the Observable
itself.
unsafeCreate
by default doesn't operate on any particular Scheduler
.T
- the value type emittedonSubscribe
- the ObservableSource
instance to wrapObservable
instanceNullPointerException
- if onSubscribe
is null
IllegalArgumentException
- if the onSubscribe
is already an Observable
, use
wrap(ObservableSource)
in this casewrap(ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,D> @NonNull Observable<T> using(@NonNull Supplier<? extends D> resourceSupplier, @NonNull Function<? super D,? extends ObservableSource<? extends T>> sourceSupplier, @NonNull Consumer<? super D> resourceCleanup)
Observable
that creates a dependent resource object, an ObservableSource
with
that resource and calls the provided resourceDisposer
function if this inner source terminates or the
downstream disposes the flow.
using
does not operate by default on a particular Scheduler
.T
- the element type of the generated Observable
D
- the type of the resource associated with the output sequenceresourceSupplier
- the factory function to create a resource object that depends on the ObservableSource
sourceSupplier
- the factory function to create an ObservableSource
resourceCleanup
- the function that will dispose of the resourceObservable
instanceNullPointerException
- if resourceSupplier
, sourceSupplier
or resourceCleanup
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,D> @NonNull Observable<T> using(@NonNull Supplier<? extends D> resourceSupplier, @NonNull Function<? super D,? extends ObservableSource<? extends T>> sourceSupplier, @NonNull Consumer<? super D> resourceCleanup, boolean eager)
Observable
that creates a dependent resource object, an ObservableSource
with
that resource and calls the provided disposer
function if this inner source terminates or the
downstream disposes the flow; doing it before these end-states have been reached if eager == true
, after otherwise.
using
does not operate by default on a particular Scheduler
.T
- the element type of the generated ObservableSource
D
- the type of the resource associated with the output sequenceresourceSupplier
- the factory function to create a resource object that depends on the ObservableSource
sourceSupplier
- the factory function to create an ObservableSource
resourceCleanup
- the function that will dispose of the resourceeager
- If true
, the resource disposal will happen either on a dispose()
call before the upstream is disposed
or just before the emission of a terminal event (onComplete
or onError
).
If false
, the resource disposal will happen either on a dispose()
call after the upstream is disposed
or just after the emission of a terminal event (onComplete
or onError
).Observable
instanceNullPointerException
- if resourceSupplier
, sourceSupplier
and resourceCleanup
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> wrap(@NonNull ObservableSource<T> source)
ObservableSource
into an Observable
if not already an Observable
.
wrap
does not operate by default on a particular Scheduler
.T
- the value typesource
- the ObservableSource
instance to wrap or cast to Observable
Observable
instance or the same as the sourceNullPointerException
- if source
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> zip(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an Iterable
of other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each of the ObservableSource
s;
the second item emitted by the resulting Observable
will be the result of the function applied to the second
item emitted by each of those ObservableSource
s; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as
the number of onNext
invocations of the ObservableSource
that emits the fewest items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(Arrays.asList(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)), (a) -> a)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
zip
does not operate by default on a particular Scheduler
.T
- the common value typeR
- the zipped result typesources
- an Iterable
of source ObservableSource
szipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if sources
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,R> @NonNull Observable<R> zip(@NonNull Iterable<? extends ObservableSource<? extends T>> sources, @NonNull Function<? super Object[],? extends R> zipper, boolean delayError, int bufferSize)
Observable
that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an Iterable
of other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each of the ObservableSource
s;
the second item emitted by the resulting Observable
will be the result of the function applied to the second
item emitted by each of those ObservableSource
s; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as
the number of onNext
invocations of the ObservableSource
that emits the fewest items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(Arrays.asList(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)), (a) -> a)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
zip
does not operate by default on a particular Scheduler
.T
- the common source value typeR
- the zipped result typesources
- an Iterable
of source ObservableSource
szipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
delayError
- delay errors signaled by any of the ObservableSource
until all ObservableSource
s terminatebufferSize
- the number of elements expected from each source ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
or zipper
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull BiFunction<? super T1,? super T2,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
and the first item
emitted by o2
; the second item emitted by the resulting Observable
will be the result of the function
applied to the second item emitted by o1
and the second item emitted by o2
; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results
in an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull BiFunction<? super T1,? super T2,? extends R> zipper, boolean delayError)
Observable
that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
and the first item
emitted by o2
; the second item emitted by the resulting Observable
will be the result of the function
applied to the second item emitted by o1
and the second item emitted by o2
; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results
in an item that will be emitted by the resulting Observable
delayError
- delay errors from any of the ObservableSource
s till the other terminatesObservable
instanceNullPointerException
- if source1
, source2
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull BiFunction<? super T1,? super T2,? extends R> zipper, boolean delayError, int bufferSize)
Observable
that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
and the first item
emitted by o2
; the second item emitted by the resulting Observable
will be the result of the function
applied to the second item emitted by o1
and the second item emitted by o2
; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results
in an item that will be emitted by the resulting Observable
delayError
- delay errors from any of the ObservableSource
s till the other terminatesbufferSize
- the number of elements expected from each source ObservableSource
to be bufferedObservable
instanceNullPointerException
- if source1
, source2
or zipper
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull Function3<? super T1,? super T2,? super T3,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
three items emitted, in sequence, by three other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
, the first item
emitted by o2
, and the first item emitted by o3
; the second item emitted by the resulting
Observable
will be the result of the function applied to the second item emitted by o1
, the
second item emitted by o2
, and the second item emitted by o3
; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
four items emitted, in sequence, by four other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
, the first item
emitted by o2
, the first item emitted by o3
, and the first item emitted by 04
;
the second item emitted by the resulting Observable
will be the result of the function applied to the second
item emitted by each of those ObservableSource
s; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,T5,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
five items emitted, in sequence, by five other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by o1
, the first item
emitted by o2
, the first item emitted by o3
, the first item emitted by o4
, and
the first item emitted by o5
; the second item emitted by the resulting Observable
will be the result of
the function applied to the second item emitted by each of those ObservableSource
s; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
source5
- a fifth source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,T5,T6,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
six items emitted, in sequence, by six other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each source ObservableSource
, the
second item emitted by the resulting Observable
will be the result of the function applied to the second item
emitted by each of those ObservableSource
s, and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
source5
- a fifth source ObservableSource
source6
- a sixth source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,T5,T6,T7,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
seven items emitted, in sequence, by seven other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each source ObservableSource
, the
second item emitted by the resulting Observable
will be the result of the function applied to the second item
emitted by each of those ObservableSource
s, and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f, g) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
source5
- a fifth source ObservableSource
source6
- a sixth source ObservableSource
source7
- a seventh source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,T5,T6,T7,T8,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull ObservableSource<? extends T8> source8, @NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
eight items emitted, in sequence, by eight other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each source ObservableSource
, the
second item emitted by the resulting Observable
will be the result of the function applied to the second item
emitted by each of those ObservableSource
s, and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f, g, h) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceT8
- the value type of the eighth sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
source5
- a fifth source ObservableSource
source6
- a sixth source ObservableSource
source7
- a seventh source ObservableSource
source8
- an eighth source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
, source8
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> @NonNull Observable<R> zip(@NonNull ObservableSource<? extends T1> source1, @NonNull ObservableSource<? extends T2> source2, @NonNull ObservableSource<? extends T3> source3, @NonNull ObservableSource<? extends T4> source4, @NonNull ObservableSource<? extends T5> source5, @NonNull ObservableSource<? extends T6> source6, @NonNull ObservableSource<? extends T7> source7, @NonNull ObservableSource<? extends T8> source8, @NonNull ObservableSource<? extends T9> source9, @NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> zipper)
Observable
that emits the results of a specified combiner function applied to combinations of
nine items emitted, in sequence, by nine other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each source ObservableSource
, the
second item emitted by the resulting Observable
will be the result of the function applied to the second item
emitted by each of those ObservableSource
s, and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as the number of onNext
invocations of the ObservableSource
that emits the fewest
items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f, g, h, i) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceT8
- the value type of the eighth sourceT9
- the value type of the ninth sourceR
- the zipped result typesource1
- the first source ObservableSource
source2
- a second source ObservableSource
source3
- a third source ObservableSource
source4
- a fourth source ObservableSource
source5
- a fifth source ObservableSource
source6
- a sixth source ObservableSource
source7
- a seventh source ObservableSource
source8
- an eighth source ObservableSource
source9
- a ninth source ObservableSource
zipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
, source5
, source6
,
source7
, source8
, source9
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public static <T,R> @NonNull Observable<R> zipArray(@NonNull Function<? super Object[],? extends R> zipper, boolean delayError, int bufferSize, @NonNull ObservableSource<? extends T>... sources)
Observable
that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an array of other ObservableSource
s.
zip
applies this function in strict sequence, so the first item emitted by the resulting Observable
will be the result of the function applied to the first item emitted by each of the ObservableSource
s;
the second item emitted by the resulting Observable
will be the result of the function applied to the second
item emitted by each of those ObservableSource
s; and so forth.
The resulting Observable<R>
returned from zip
will invoke onNext
as many times as
the number of onNext
invocations of the ObservableSource
that emits the fewest items.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
zip(new ObservableSource[]{range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)}, (a) ->
a)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
zipArray
does not operate by default on a particular Scheduler
.T
- the common element typeR
- the result typesources
- an array of source ObservableSource
szipper
- a function that, when applied to an item emitted by each of the ObservableSource
s, results in
an item that will be emitted by the resulting Observable
delayError
- delay errors signaled by any of the ObservableSource
until all ObservableSource
s terminatebufferSize
- the number of elements expected from each source ObservableSource
to be bufferedObservable
instanceNullPointerException
- if sources
or zipper
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Boolean> all(@NonNull Predicate<? super T> predicate)
Single
that emits a Boolean
that indicates whether all of the items emitted by the current
Observable
satisfy a condition.
all
does not operate by default on a particular Scheduler
.predicate
- a function that evaluates an item and returns a Boolean
Single
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> ambWith(@NonNull ObservableSource<? extends T> other)
Observable
or the other ObservableSource
provided of which the first either emits an item or sends a termination
notification.
When the current Observable
signals an item or terminates first, the subscription to the other
ObservableSource
is disposed. If the other ObservableSource
signals an item or terminates first,
the subscription to the current Observable
is disposed.
ambWith
does not operate by default on a particular Scheduler
.ObservableSource
signals an error, the error is routed to the global
error handler via RxJavaPlugins.onError(Throwable)
.
other
- an ObservableSource
competing to react first. A subscription to this provided source will occur after
subscribing to the current source.Observable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Boolean> any(@NonNull Predicate<? super T> predicate)
Single
that emits true
if any item emitted by the current Observable
satisfies a
specified condition, otherwise false
. Note: this always emits false
if the
current Observable
is empty.
In Rx.Net this is the any
Observer
but we renamed it in RxJava to better match Java naming
idioms.
any
does not operate by default on a particular Scheduler
.predicate
- the condition to test items emitted by the current Observable
Single
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingFirst()
Observable
, or throws
NoSuchElementException
if it emits no items.
blockingFirst
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.Observable
NoSuchElementException
- if the current Observable
emits no items@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingFirst(@NonNull T defaultItem)
Observable
, or a default value if it emits no
items.
blockingFirst
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.defaultItem
- a default value to return if the current Observable
emits no itemsObservable
, or the default value if it emits no
itemsNullPointerException
- if defaultItem
is null
@SchedulerSupport(value="none") public final void blockingForEach(@NonNull Consumer<? super T> onNext)
Observable
in a blocking fashion and invokes the given
Consumer
with each upstream item on the current thread until the
upstream terminates.
Note: the method will only return if the upstream terminates or the current thread is interrupted.
This method executes the Consumer
on the current thread while
subscribe(Consumer)
executes the consumer on the original caller thread of the
sequence.
blockingForEach
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.onNext
- the Consumer
to invoke for each item emitted by the Observable
NullPointerException
- if onNext
is null
RuntimeException
- if an error occurssubscribe(Consumer)
,
blockingForEach(Consumer, int)
@SchedulerSupport(value="none") public final void blockingForEach(@NonNull Consumer<? super T> onNext, int capacityHint)
Observable
in a blocking fashion and invokes the given
Consumer
with each upstream item on the current thread until the
upstream terminates.
Note: the method will only return if the upstream terminates or the current thread is interrupted.
This method executes the Consumer
on the current thread while
subscribe(Consumer)
executes the consumer on the original caller thread of the
sequence.
blockingForEach
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.onNext
- the Consumer
to invoke for each item emitted by the Observable
capacityHint
- the number of items expected to be buffered (allows reducing buffer reallocations)NullPointerException
- if onNext
is null
IllegalArgumentException
- if capacityHint
is non-positiveRuntimeException
- if an error occurs; Error
s and RuntimeException
s are rethrown
as they are, checked Exception
s are wrapped into RuntimeException
ssubscribe(Consumer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Iterable<T> blockingIterable()
Observable
as an Iterable
which, when iterated,
subscribes to the current Observable
and blocks
until the current Observable
emits items or terminates.
blockingIterable
does not operate by default on a particular Scheduler
.Iterable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Iterable<T> blockingIterable(int capacityHint)
Observable
as an Iterable
which, when iterated,
subscribes to the current Observable
and blocks
until the current Observable
emits items or terminates.
blockingIterable
does not operate by default on a particular Scheduler
.capacityHint
- the expected number of items to be bufferedIterable
instanceIllegalArgumentException
- if capacityHint
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingLast()
Observable
, or throws
NoSuchElementException
if the current Observable
emits no items.
blockingLast
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.Observable
NoSuchElementException
- if the current Observable
emits no items@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingLast(@NonNull T defaultItem)
Observable
, or a default value if it emits no
items.
blockingLast
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.defaultItem
- a default value to return if the current Observable
emits no itemsObservable
, or the default value if it emits no
itemsNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Iterable<T> blockingLatest()
Iterable
that returns the latest item emitted by the current Observable
,
waiting if necessary for one to become available.
If the current Observable
produces items faster than Iterator.next
takes them,
onNext
events might be skipped, but onError
or onComplete
events are not.
Note also that an onNext
directly followed by onComplete
might hide the onNext
event.
blockingLatest
does not operate by default on a particular Scheduler
.Iterable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Iterable<T> blockingMostRecent(@NonNull T initialItem)
Iterable
that always returns the item most recently emitted by the current
Observable
.
blockingMostRecent
does not operate by default on a particular Scheduler
.initialItem
- the initial value that the Iterable
sequence will yield if the current
Observable
has not yet emitted an itemIterable
instanceNullPointerException
- if initialItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Iterable<T> blockingNext()
Iterable
that blocks until the current Observable
emits another item, then
returns that item.
blockingNext
does not operate by default on a particular Scheduler
.Iterable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingSingle()
Observable
completes after emitting a single item, return that item, otherwise
throw a NoSuchElementException
.
blockingSingle
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.Observable
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final T blockingSingle(@NonNull T defaultItem)
Observable
completes after emitting a single item, return that item; if it emits
more than one item, throw an IllegalArgumentException
; if it emits no items, return a default
value.
blockingSingle
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.defaultItem
- a default value to return if the current Observable
emits no itemsObservable
, or the default value if it emits no
itemsNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Future<T> toFuture()
Future
representing the only value emitted by the current Observable
.
If the Observable
emits more than one item, Future
will receive an
IndexOutOfBoundsException
. If the Observable
is empty, Future
will receive an NoSuchElementException
. The Observable
source has to terminate in order
for the returned Future
to terminate as well.
If the Observable
may emit more than one item, use Observable.toList().toFuture()
.
toFuture
does not operate by default on a particular Scheduler
.Future
instancesingleOrErrorStage()
@SchedulerSupport(value="none") public final void blockingSubscribe()
Observable
to a terminal event, ignoring any values and rethrowing any exception.
Note that calling this method will block the caller thread until the upstream terminates normally or with an error. Therefore, calling this method from special threads such as the Android Main Thread or the Swing Event Dispatch Thread is not recommended.
blockingSubscribe
does not operate by default on a particular Scheduler
.@SchedulerSupport(value="none") public final void blockingSubscribe(@NonNull Consumer<? super T> onNext)
If the Observable
emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError(Throwable)
handler.
Using the overloads blockingSubscribe(Consumer, Consumer)
or blockingSubscribe(Consumer, Consumer, Action)
instead is recommended.
Note that calling this method will block the caller thread until the upstream terminates normally or with an error. Therefore, calling this method from special threads such as the Android Main Thread or the Swing Event Dispatch Thread is not recommended.
blockingSubscribe
does not operate by default on a particular Scheduler
.onNext
- the callback action for each source valueNullPointerException
- if onNext
is null
blockingSubscribe(Consumer, Consumer)
,
blockingSubscribe(Consumer, Consumer, Action)
@SchedulerSupport(value="none") public final void blockingSubscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError)
Note that calling this method will block the caller thread until the upstream terminates normally or with an error. Therefore, calling this method from special threads such as the Android Main Thread or the Swing Event Dispatch Thread is not recommended.
blockingSubscribe
does not operate by default on a particular Scheduler
.onNext
- the callback action for each source valueonError
- the callback action for an error eventNullPointerException
- if onNext
or onError
is null
blockingSubscribe(Consumer, Consumer, Action)
@SchedulerSupport(value="none") public final void blockingSubscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete)
Note that calling this method will block the caller thread until the upstream terminates normally or with an error. Therefore, calling this method from special threads such as the Android Main Thread or the Swing Event Dispatch Thread is not recommended.
blockingSubscribe
does not operate by default on a particular Scheduler
.onNext
- the callback action for each source valueonError
- the callback action for an error eventonComplete
- the callback action for the completion event.NullPointerException
- if onNext
, onError
or onComplete
is null
@SchedulerSupport(value="none") public final void blockingSubscribe(@NonNull Observer<? super T> observer)
Observer
methods on the current thread.
Note that calling this method will block the caller thread until the upstream terminates
normally, with an error or the Observer
disposes the Disposable
it receives via
Observer.onSubscribe(Disposable)
.
Therefore, calling this method from special threads such as the
Android Main Thread or the Swing Event Dispatch Thread is not recommended.
blockingSubscribe
does not operate by default on a particular Scheduler
.observer
- the Observer
instance to forward events and calls to in the current threadNullPointerException
- if observer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<List<T>> buffer(int count)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each containing count
items. When the current
Observable
completes, the resulting Observable
emits the current buffer and propagates the notification
from the current Observable
. Note that if the current Observable
issues an onError
notification
the event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.count
- the maximum number of items in each buffer before it should be emittedObservable
instanceIllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<List<T>> buffer(int count, int skip)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits buffers every skip
items, each containing count
items. When the current
Observable
completes, the resulting Observable
emits the current buffer and propagates the notification
from the current Observable
. Note that if the current Observable
issues an onError
notification
the event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.count
- the maximum size of each buffer before it should be emittedskip
- how many items emitted by the current Observable
should be skipped before starting a new
buffer. Note that when skip
and count
are equal, this is the same operation as
buffer(int)
.Observable
instanceIllegalArgumentException
- if count
or skip
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U extends Collection<? super T>> @NonNull Observable<U> buffer(int count, int skip, @NonNull Supplier<U> bufferSupplier)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits buffers every skip
items, each containing count
items. When the current
Observable
completes, the resulting Observable
emits the current buffer and propagates the notification
from the current Observable
. Note that if the current Observable
issues an onError
notification
the event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.U
- the collection subclass type to buffer intocount
- the maximum size of each buffer before it should be emittedskip
- how many items emitted by the current Observable
should be skipped before starting a new
buffer. Note that when skip
and count
are equal, this is the same operation as
buffer(int)
.bufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferObservable
instanceNullPointerException
- if bufferSupplier
is null
IllegalArgumentException
- if count
or skip
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U extends Collection<? super T>> @NonNull Observable<U> buffer(int count, @NonNull Supplier<U> bufferSupplier)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each containing count
items. When the current
Observable
completes, the resulting Observable
emits the current buffer and propagates the notification
from the current Observable
. Note that if the current Observable
issues an onError
notification
the event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.U
- the collection subclass type to buffer intocount
- the maximum number of items in each buffer before it should be emittedbufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferObservable
instanceNullPointerException
- if bufferSupplier
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, long timeskip, @NonNull TimeUnit unit)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
starts a new buffer periodically, as determined by the timeskip
argument. It emits
each buffer after a fixed timespan, specified by the timespan
argument. When the current
Observable
completes, the resulting Observable
emits the current buffer and propagates the notification
from the current Observable
. Note that if the current Observable
issues an onError
notification
the event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
operates by default on the computation
Scheduler
.timespan
- the period of time each buffer collects items before it is emittedtimeskip
- the period of time after which a new buffer will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
starts a new buffer periodically, as determined by the timeskip
argument, and on the
specified scheduler
. It emits each buffer after a fixed timespan, specified by the
timespan
argument. When the current Observable
completes, the resulting Observable
emits the
current buffer and propagates the notification from the current Observable
. Note that if the current
Observable
issues an onError
notification the event is passed on immediately without first emitting the
buffer it is in the process of assembling.
Scheduler
this operator will use.timespan
- the period of time each buffer collects items before it is emittedtimeskip
- the period of time after which a new buffer will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsscheduler
- the Scheduler
to use when determining the end and start of a bufferObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <U extends Collection<? super T>> @NonNull Observable<U> buffer(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Supplier<U> bufferSupplier)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
starts a new buffer periodically, as determined by the timeskip
argument, and on the
specified scheduler
. It emits each buffer after a fixed timespan, specified by the
timespan
argument. When the current Observable
completes, the resulting Observable
emits the
current buffer and propagates the notification from the current Observable
. Note that if the current
Observable
issues an onError
notification the event is passed on immediately without first emitting the
buffer it is in the process of assembling.
Scheduler
this operator will use.U
- the collection subclass type to buffer intotimespan
- the period of time each buffer collects items before it is emittedtimeskip
- the period of time after which a new buffer will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsscheduler
- the Scheduler
to use when determining the end and start of a bufferbufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferObservable
instanceNullPointerException
- if unit
, scheduler
or bufferSupplier
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, @NonNull TimeUnit unit)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each of a fixed duration specified by the
timespan
argument. When the current Observable
completes, the resulting Observable
emits the
current buffer and propagates the notification from the current Observable
. Note that if the current
Observable
issues an onError
notification the event is passed on immediately without first emitting the
buffer it is in the process of assembling.
buffer
operates by default on the computation
Scheduler
.timespan
- the period of time each buffer collects items before it is emitted and replaced with a new
bufferunit
- the unit of time that applies to the timespan
argumentObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, @NonNull TimeUnit unit, int count)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each of a fixed duration specified by the
timespan
argument or a maximum size specified by the count
argument (whichever is reached
first). When the current Observable
completes, the resulting Observable
emits the current buffer and
propagates the notification from the current Observable
. Note that if the current Observable
issues an
onError
notification the event is passed on immediately without first emitting the buffer it is in the process of
assembling.
buffer
operates by default on the computation
Scheduler
.timespan
- the period of time each buffer collects items before it is emitted and replaced with a new
bufferunit
- the unit of time which applies to the timespan
argumentcount
- the maximum size of each buffer before it is emittedObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, int count)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each of a fixed duration specified by the
timespan
argument as measured on the specified scheduler
, or a maximum size specified by
the count
argument (whichever is reached first). When the current Observable
completes, the resulting
Observable
emits the current buffer and propagates the notification from the current Observable
. Note
that if the current Observable
issues an onError
notification the event is passed on immediately without
first emitting the buffer it is in the process of assembling.
Scheduler
this operator will use.timespan
- the period of time each buffer collects items before it is emitted and replaced with a new
bufferunit
- the unit of time which applies to the timespan
argumentscheduler
- the Scheduler
to use when determining the end and start of a buffercount
- the maximum size of each buffer before it is emittedObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <U extends Collection<? super T>> @NonNull Observable<U> buffer(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, int count, @NonNull Supplier<U> bufferSupplier, boolean restartTimerOnMaxSize)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each of a fixed duration specified by the
timespan
argument as measured on the specified scheduler
, or a maximum size specified by
the count
argument (whichever is reached first). When the current Observable
completes, the resulting
Observable
emits the current buffer and propagates the notification from the current Observable
. Note
that if the current Observable
issues an onError
notification the event is passed on immediately without
first emitting the buffer it is in the process of assembling.
Scheduler
this operator will use.U
- the collection subclass type to buffer intotimespan
- the period of time each buffer collects items before it is emitted and replaced with a new
bufferunit
- the unit of time which applies to the timespan
argumentscheduler
- the Scheduler
to use when determining the end and start of a buffercount
- the maximum size of each buffer before it is emittedbufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferrestartTimerOnMaxSize
- if true
, the time window is restarted when the max capacity of the current buffer
is reachedObservable
instanceNullPointerException
- if unit
, scheduler
or bufferSupplier
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<List<T>> buffer(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping buffers, each of a fixed duration specified by the
timespan
argument and on the specified scheduler
. When the current Observable
completes,
the resulting Observable
emits the current buffer and propagates the notification from the current
Observable
. Note that if the current Observable
issues an onError
notification the event is passed on
immediately without first emitting the buffer it is in the process of assembling.
Scheduler
this operator will use.timespan
- the period of time each buffer collects items before it is emitted and replaced with a new
bufferunit
- the unit of time which applies to the timespan
argumentscheduler
- the Scheduler
to use when determining the end and start of a bufferObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <TOpening,TClosing> @NonNull Observable<List<T>> buffer(@NonNull ObservableSource<? extends TOpening> openingIndicator, @NonNull Function<? super TOpening,? extends ObservableSource<? extends TClosing>> closingIndicator)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits buffers that it creates when the specified openingIndicator
ObservableSource
emits an
item, and closes when the ObservableSource
returned from closingIndicator
emits an item. If any of the
current Observable
, openingIndicator
or closingIndicator
issues an onError
notification the
event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.TOpening
- the element type of the buffer-opening ObservableSource
TClosing
- the element type of the individual buffer-closing ObservableSource
sopeningIndicator
- the ObservableSource
that, when it emits an item, causes a new buffer to be createdclosingIndicator
- the Function
that is used to produce an ObservableSource
for every buffer created. When this indicator
ObservableSource
emits an item, the associated buffer is emitted.Observable
instanceNullPointerException
- if openingIndicator
or closingIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <TOpening,TClosing,U extends Collection<? super T>> @NonNull Observable<U> buffer(@NonNull ObservableSource<? extends TOpening> openingIndicator, @NonNull Function<? super TOpening,? extends ObservableSource<? extends TClosing>> closingIndicator, @NonNull Supplier<U> bufferSupplier)
Observable
that emits buffers of items it collects from the current Observable
. The resulting
Observable
emits buffers that it creates when the specified openingIndicator
ObservableSource
emits an
item, and closes when the ObservableSource
returned from closingIndicator
emits an item. If any of the
current Observable
, openingIndicator
or closingIndicator
issues an onError
notification the
event is passed on immediately without first emitting the buffer it is in the process of assembling.
buffer
does not operate by default on a particular Scheduler
.U
- the collection subclass type to buffer intoTOpening
- the element type of the buffer-opening ObservableSource
TClosing
- the element type of the individual buffer-closing ObservableSource
sopeningIndicator
- the ObservableSource
that, when it emits an item, causes a new buffer to be createdclosingIndicator
- the Function
that is used to produce an ObservableSource
for every buffer created. When this indicator
ObservableSource
emits an item, the associated buffer is emitted.bufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferObservable
instanceNullPointerException
- if openingIndicator
, closingIndicator
or bufferSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <B> @NonNull Observable<List<T>> buffer(@NonNull ObservableSource<B> boundaryIndicator)
Observable
that emits non-overlapping buffered items from the current Observable
each time the
specified boundary ObservableSource
emits an item.
Completion of either the source or the boundary ObservableSource
causes the returned ObservableSource
to emit the
latest buffer and complete. If either the current Observable
or the boundary ObservableSource
issues an
onError
notification the event is passed on immediately without first emitting the buffer it is in the process of
assembling.
buffer
does not operate by default on a particular Scheduler
.B
- the boundary value type (ignored)boundaryIndicator
- the boundary ObservableSource
Observable
instanceNullPointerException
- if boundaryIndicator
is null
buffer(ObservableSource, int)
,
ReactiveX operators documentation: Buffer@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <B> @NonNull Observable<List<T>> buffer(@NonNull ObservableSource<B> boundaryIndicator, int initialCapacity)
Observable
that emits non-overlapping buffered items from the current Observable
each time the
specified boundary ObservableSource
emits an item.
Completion of either the source or the boundary ObservableSource
causes the returned ObservableSource
to emit the
latest buffer and complete. If either the current Observable
or the boundary ObservableSource
issues an
onError
notification the event is passed on immediately without first emitting the buffer it is in the process of
assembling.
buffer
does not operate by default on a particular Scheduler
.B
- the boundary value type (ignored)boundaryIndicator
- the boundary ObservableSource
initialCapacity
- the initial capacity of each buffer chunkObservable
instanceNullPointerException
- if boundaryIndicator
is null
IllegalArgumentException
- if initialCapacity
is non-positivebuffer(ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <B,U extends Collection<? super T>> @NonNull Observable<U> buffer(@NonNull ObservableSource<B> boundaryIndicator, @NonNull Supplier<U> bufferSupplier)
Observable
that emits non-overlapping buffered items from the current Observable
each time the
specified boundary ObservableSource
emits an item.
Completion of either the source or the boundary ObservableSource
causes the returned ObservableSource
to emit the
latest buffer and complete. If either the current Observable
or the boundary ObservableSource
issues an
onError
notification the event is passed on immediately without first emitting the buffer it is in the process of
assembling.
buffer
does not operate by default on a particular Scheduler
.U
- the collection subclass type to buffer intoB
- the boundary value type (ignored)boundaryIndicator
- the boundary ObservableSource
bufferSupplier
- a factory function that returns an instance of the collection subclass to be used and returned
as the bufferObservable
instanceNullPointerException
- if boundaryIndicator
or bufferSupplier
is null
buffer(ObservableSource, int)
,
ReactiveX operators documentation: Buffer@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> cache()
Observable
that subscribes to the current Observable
lazily, caches all of its events
and replays them, in the same order as received, to all the downstream observers.
This is useful when you want an Observable
to cache responses and you can't control the
subscribe/dispose behavior of all the Observer
s.
The operator subscribes only when the first downstream observer subscribes and maintains
a single subscription towards the current Observable
. In contrast, the operator family of replay()
that return a ConnectableObservable
require an explicit call to ConnectableObservable.connect()
.
Note: You sacrifice the ability to dispose the origin when you use the cache
operator so be careful not to use this operator on Observable
s that emit an infinite or very large number
of items that will use up memory.
A possible workaround is to apply takeUntil
with a predicate or
another source before (and perhaps after) the application of cache()
.
AtomicBoolean shouldStop = new AtomicBoolean();
source.takeUntil(v -> shouldStop.get())
.cache()
.takeUntil(v -> shouldStop.get())
.subscribe(...);
Since the operator doesn't allow clearing the cached values either, the possible workaround is
to forget all references to it via onTerminateDetach()
applied along with the previous
workaround:
AtomicBoolean shouldStop = new AtomicBoolean();
source.takeUntil(v -> shouldStop.get())
.onTerminateDetach()
.cache()
.takeUntil(v -> shouldStop.get())
.onTerminateDetach()
.subscribe(...);
cache
does not operate by default on a particular Scheduler
.Observable
instancetakeUntil(Predicate)
,
takeUntil(ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> cacheWithInitialCapacity(int initialCapacity)
Observable
that subscribes to the current Observable
lazily, caches all of its events
and replays them, in the same order as received, to all the downstream observers.
This is useful when you want an Observable
to cache responses and you can't control the
subscribe/dispose behavior of all the Observer
s.
The operator subscribes only when the first downstream observer subscribes and maintains
a single subscription towards the current Observable
. In contrast, the operator family of replay()
that return a ConnectableObservable
require an explicit call to ConnectableObservable.connect()
.
Note: You sacrifice the ability to dispose the origin when you use the cache
operator so be careful not to use this operator on Observable
s that emit an infinite or very large number
of items that will use up memory.
A possible workaround is to apply `takeUntil` with a predicate or
another source before (and perhaps after) the application of cache()
.
AtomicBoolean shouldStop = new AtomicBoolean();
source.takeUntil(v -> shouldStop.get())
.cache()
.takeUntil(v -> shouldStop.get())
.subscribe(...);
Since the operator doesn't allow clearing the cached values either, the possible workaround is
to forget all references to it via onTerminateDetach()
applied along with the previous
workaround:
AtomicBoolean shouldStop = new AtomicBoolean();
source.takeUntil(v -> shouldStop.get())
.onTerminateDetach()
.cache()
.takeUntil(v -> shouldStop.get())
.onTerminateDetach()
.subscribe(...);
cacheWithInitialCapacity
does not operate by default on a particular Scheduler
.
Note: The capacity hint is not an upper bound on cache size. For that, consider
replay(int)
in combination with ConnectableObservable.autoConnect()
or similar.
initialCapacity
- hint for number of items to cache (for optimizing underlying data structure)Observable
instanceIllegalArgumentException
- if initialCapacity
is non-positivetakeUntil(Predicate)
,
takeUntil(ObservableSource)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<U> cast(@NonNull Class<U> clazz)
Observable
that emits the upstream items while
they can be cast via Class.cast(Object)
until the upstream terminates,
or until the upstream signals an item which can't be cast,
resulting in a ClassCastException
to be signaled to the downstream.
cast
does not operate by default on a particular Scheduler
.U
- the output value type cast toclazz
- the target class to use to try and cast the upstream items intoObservable
instanceNullPointerException
- if clazz
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Single<U> collect(@NonNull Supplier<? extends U> initialItemSupplier, @NonNull BiConsumer<? super U,? super T> collector)
Observable
into a single mutable data structure and returns
a Single
that emits this structure.
This is a simplified version of reduce
that does not need to return the state on each pass.
Note that this operator requires the upstream to signal onComplete
for the accumulator object to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
collect
does not operate by default on a particular Scheduler
.U
- the accumulator and output typeinitialItemSupplier
- the mutable data structure that will collect the itemscollector
- a function that accepts the state
and an emitted item, and modifies the accumulator accordingly
accordinglySingle
instanceNullPointerException
- if initialItemSupplier
or collector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Single<U> collectInto(@NonNull U initialItem, @NonNull BiConsumer<? super U,? super T> collector)
Observable
into a single mutable data structure and returns
a Single
that emits this structure.
This is a simplified version of reduce
that does not need to return the state on each pass.
Note that this operator requires the upstream to signal onComplete
for the accumulator object to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
collectInto
does not operate by default on a particular Scheduler
.U
- the accumulator and output typeinitialItem
- the mutable data structure that will collect the itemscollector
- a function that accepts the state
and an emitted item, and modifies the accumulator accordingly
accordinglySingle
instanceNullPointerException
- if initialItem
or collector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> compose(@NonNull ObservableTransformer<? super T,? extends R> composer)
Observable
by applying a particular ObservableTransformer
function to it.
This method operates on the Observable
itself whereas lift(io.reactivex.rxjava3.core.ObservableOperator<? extends R, ? super T>)
operates on the ObservableSource
's
Observer
s.
If the operator you are creating is designed to act on the individual items emitted by the current
Observable
, use lift(io.reactivex.rxjava3.core.ObservableOperator<? extends R, ? super T>)
. If your operator is designed to transform the current Observable
as a whole
(for instance, by applying a particular set of existing RxJava operators to it) use compose
.
compose
does not operate by default on a particular Scheduler
.R
- the value type of the output ObservableSource
composer
- implements the function that transforms the current Observable
Observable
instanceNullPointerException
- if composer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Observable
that emits items resulting from applying a function that you supply to each item
emitted by the current Observable
, where that function returns an ObservableSource
, and then emitting the items
that result from concatenating those returned ObservableSource
s.
Note that there is no guarantee where the given mapper
function will be executed; it could be on the subscribing thread,
on the upstream thread signaling the new item to be mapped or on the thread where the inner source terminates. To ensure
the mapper
function is confined to a known thread, use the concatMap(Function, int, Scheduler)
overload.
concatMap
does not operate by default on a particular Scheduler
.R
- the type of the inner ObservableSource
sources and thus the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
Observable
instanceNullPointerException
- if mapper
is null
concatMap(Function, int, Scheduler)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int bufferSize)
Observable
that emits items resulting from applying a function that you supply to each item
emitted by the current Observable
, where that function returns an ObservableSource
, and then emitting the items
that result from concatenating those returned ObservableSource
s.
Note that there is no guarantee where the given mapper
function will be executed; it could be on the subscribing thread,
on the upstream thread signaling the new item to be mapped or on the thread where the inner source terminates. To ensure
the mapper
function is confined to a known thread, use the concatMap(Function, int, Scheduler)
overload.
concatMap
does not operate by default on a particular Scheduler
.R
- the type of the inner ObservableSource
sources and thus the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
bufferSize
- the number of elements expected from the current Observable
to be bufferedObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMap(Function, int, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> concatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int bufferSize, @NonNull Scheduler scheduler)
Observable
that emits items resulting from applying a function that you supply to each item
emitted by the current Observable
, where that function returns an ObservableSource
, and then emitting the items
that result from concatenating those returned ObservableSource
s.
The difference between concatMap(Function, int)
and this operator is that this operator guarantees the mapper
function is executed on the specified scheduler.
concatMap
executes the given mapper
function on the provided Scheduler
.R
- the type of the inner ObservableSource
sources and thus the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
bufferSize
- the number of elements expected from the current Observable
to be bufferedscheduler
- the scheduler where the mapper
function will be executedObservable
instanceNullPointerException
- if mapper
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
ObservableSource
, subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource
s
till all of them terminate.
Note that there is no guarantee where the given mapper
function will be executed; it could be on the subscribing thread,
on the upstream thread signaling the new item to be mapped or on the thread where the inner source terminates. To ensure
the mapper
function is confined to a known thread, use the concatMapDelayError(Function, boolean, int, Scheduler)
overload.
concatMapDelayError
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that maps the items of the current Observable
into the inner ObservableSource
s.Observable
instance with the concatenation behaviorNullPointerException
- if mapper
is null
concatMapDelayError(Function, boolean, int, Scheduler)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean tillTheEnd, int bufferSize)
ObservableSource
, subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource
s
till all of them terminate.
Note that there is no guarantee where the given mapper
function will be executed; it could be on the subscribing thread,
on the upstream thread signaling the new item to be mapped or on the thread where the inner source terminates. To ensure
the mapper
function is confined to a known thread, use the concatMapDelayError(Function, boolean, int, Scheduler)
overload.
concatMapDelayError
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that maps the items of the current Observable
into the inner ObservableSource
s.tillTheEnd
- if true
, all errors from the outer and inner ObservableSource
sources are delayed until the end,
if false
, an error from the main source is signaled when the current Observable
source terminatesbufferSize
- the number of elements expected from the current Observable
to be bufferedObservable
instance with the concatenation behaviorNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapDelayError(Function, boolean, int, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> concatMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean tillTheEnd, int bufferSize, @NonNull Scheduler scheduler)
ObservableSource
, subscribes to them one after the other,
one at a time and emits their values in order
while delaying any error from either this or any of the inner ObservableSource
s
till all of them terminate.
concatMapDelayError
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that maps the items of the current Observable
into the inner ObservableSource
s.tillTheEnd
- if true
, all errors from the outer and inner ObservableSource
sources are delayed until the end,
if false
, an error from the main source is signaled when the current Observable
source terminatesbufferSize
- the number of elements expected from the current Observable
to be bufferedscheduler
- the scheduler where the mapper
function will be executedObservable
instance with the concatenation behaviorNullPointerException
- if mapper
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapDelayError(Function, boolean, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapEager(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
ObservableSource
s and concatenates these ObservableSource
s eagerly into a single
Observable
sequence.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
current Observable
s. The operator buffers the values emitted by these ObservableSource
s and then drains them in
order, each one after the previous one completes.
Scheduler
.R
- the value typemapper
- the function that maps a sequence of values into a sequence of ObservableSource
s that will be
eagerly concatenatedObservable
instance with the specified concatenation behaviorNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapEager(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int maxConcurrency, int bufferSize)
ObservableSource
s and concatenates these ObservableSource
s eagerly into a single
Observable
sequence.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
current Observable
s. The operator buffers the values emitted by these ObservableSource
s and then drains them in
order, each one after the previous one completes.
Scheduler
.R
- the value typemapper
- the function that maps a sequence of values into a sequence of ObservableSource
s that will be
eagerly concatenatedmaxConcurrency
- the maximum number of concurrent subscribed ObservableSource
sbufferSize
- hints about the number of expected items from each inner ObservableSource
, must be positiveObservable
instance with the specified concatenation behaviorNullPointerException
- if mapper
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapEagerDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean tillTheEnd)
ObservableSource
s and concatenates these ObservableSource
s eagerly into a single
Observable
sequence.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
current Observable
s. The operator buffers the values emitted by these ObservableSource
s and then drains them in
order, each one after the previous one completes.
Scheduler
.R
- the value typemapper
- the function that maps a sequence of values into a sequence of ObservableSource
s that will be
eagerly concatenatedtillTheEnd
- if true
, all errors from the outer and inner ObservableSource
sources are delayed until the end,
if false
, an error from the main source is signaled when the current Observable
source terminatesObservable
instance with the specified concatenation behaviorNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapEagerDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean tillTheEnd, int maxConcurrency, int bufferSize)
ObservableSource
s and concatenates these ObservableSource
s eagerly into a single
Observable
sequence.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the
current Observable
s. The operator buffers the values emitted by these ObservableSource
s and then drains them in
order, each one after the previous one completes.
Scheduler
.R
- the value typemapper
- the function that maps a sequence of values into a sequence of ObservableSource
s that will be
eagerly concatenatedtillTheEnd
- if true
, exceptions from the current Observable
and all the inner ObservableSource
s are delayed until
all of them terminate, if false
, exception from the current Observable
is delayed until the
currently running ObservableSource
terminatesmaxConcurrency
- the maximum number of concurrent subscribed ObservableSource
sbufferSize
- the number of elements expected from the current Observable
and each inner ObservableSource
to be bufferedObservable
instance with the specified concatenation behaviorNullPointerException
- if mapper
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable concatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Observable
into CompletableSource
s, subscribes to them one at a time in
order and waits until the upstream and all CompletableSource
s complete.
concatMapCompletable
does not operate by default on a particular Scheduler
.History: 2.1.6 - experimental
mapper
- a function that, when applied to an item emitted by the current Observable
, returns a CompletableSource
Completable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable concatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper, int capacityHint)
Observable
into CompletableSource
s, subscribes to them one at a time in
order and waits until the upstream and all CompletableSource
s complete.
concatMapCompletable
does not operate by default on a particular Scheduler
.History: 2.1.6 - experimental
mapper
- a function that, when applied to an item emitted by the current Observable
, returns a CompletableSource
capacityHint
- the number of upstream items expected to be buffered until the current CompletableSource
, mapped from
the current item, completes.Completable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if capacityHint
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper)
CompletableSource
s and subscribes to them one after the
other terminates, delaying all errors till both the current Observable
and all
inner CompletableSource
s terminate.
concatMapCompletableDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
mapper
- the function called with the upstream item and should return
a CompletableSource
to become the next source to
be subscribed toCompletable
instanceNullPointerException
- if mapper
is null
concatMapCompletable(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper, boolean tillTheEnd)
CompletableSource
s and subscribes to them one after the
other terminates, optionally delaying all errors till both the current Observable
and all
inner CompletableSource
s terminate.
concatMapCompletableDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
mapper
- the function called with the upstream item and should return
a CompletableSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner CompletableSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
CompletableSource
terminates and only then is
it emitted to the downstream.Completable
instanceNullPointerException
- if mapper
is null
concatMapCompletable(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable concatMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper, boolean tillTheEnd, int bufferSize)
CompletableSource
s and subscribes to them one after the
other terminates, optionally delaying all errors till both the current Observable
and all
inner CompletableSource
s terminate.
concatMapCompletableDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
mapper
- the function called with the upstream item and should return
a CompletableSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner CompletableSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
CompletableSource
terminates and only then is
it emitted to the downstream.bufferSize
- The number of upstream items expected to be buffered so that fresh items are
ready to be mapped when a previous CompletableSource
terminates.Completable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapCompletable(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<U> concatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Observable
that concatenate each item emitted by the current Observable
with the values in an
Iterable
corresponding to that item that is generated by a selector.
concatMapIterable
does not operate by default on a particular Scheduler
.U
- the type of item emitted by the resulting Observable
mapper
- a function that returns an Iterable
sequence of values for when given an item emitted by the
current Observable
Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
MaybeSource
s and subscribes to them one after the
other succeeds or completes, emits their success value if available or terminates immediately if
either the current Observable
or the current inner MaybeSource
fail.
concatMapMaybe
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner MaybeSource
smapper
- the function called with the upstream item and should return
a MaybeSource
to become the next source to
be subscribed toObservable
instanceNullPointerException
- if mapper
is null
concatMapMaybeDelayError(Function)
,
concatMapMaybe(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper, int bufferSize)
MaybeSource
s and subscribes to them one after the
other succeeds or completes, emits their success value if available or terminates immediately if
either the current Observable
or the current inner MaybeSource
fail.
concatMapMaybe
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner MaybeSource
smapper
- the function called with the upstream item and should return
a MaybeSource
to become the next source to
be subscribed tobufferSize
- The number of upstream items expected to be buffered so that fresh items are
ready to be mapped when a previous MaybeSource
terminates.Observable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapMaybe(Function)
,
concatMapMaybeDelayError(Function, boolean, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
MaybeSource
s and subscribes to them one after the
other terminates, emits their success value if available and delaying all errors
till both the current Observable
and all inner MaybeSource
s terminate.
concatMapMaybeDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner MaybeSource
smapper
- the function called with the upstream item and should return
a MaybeSource
to become the next source to
be subscribed toObservable
instanceNullPointerException
- if mapper
is null
concatMapMaybe(Function)
,
concatMapMaybeDelayError(Function, boolean)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper, boolean tillTheEnd)
MaybeSource
s and subscribes to them one after the
other terminates, emits their success value if available and optionally delaying all errors
till both the current Observable
and all inner MaybeSource
s terminate.
concatMapMaybeDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner MaybeSource
smapper
- the function called with the upstream item and should return
a MaybeSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner MaybeSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
MaybeSource
terminates and only then is
it emitted to the downstream.Observable
instanceNullPointerException
- if mapper
is null
concatMapMaybe(Function, int)
,
concatMapMaybeDelayError(Function, boolean, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper, boolean tillTheEnd, int bufferSize)
MaybeSource
s and subscribes to them one after the
other terminates, emits their success value if available and optionally delaying all errors
till both the current Observable
and all inner MaybeSource
s terminate.
concatMapMaybeDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner MaybeSource
smapper
- the function called with the upstream item and should return
a MaybeSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner MaybeSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
MaybeSource
terminates and only then is
it emitted to the downstream.bufferSize
- The number of upstream items expected to be buffered so that fresh items are
ready to be mapped when a previous MaybeSource
terminates.Observable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapMaybe(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
SingleSource
s and subscribes to them one after the
other succeeds, emits their success values or terminates immediately if
either the current Observable
or the current inner SingleSource
fail.
concatMapSingle
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner SingleSource
smapper
- the function called with the upstream item and should return
a SingleSource
to become the next source to
be subscribed toObservable
instanceNullPointerException
- if mapper
is null
concatMapSingleDelayError(Function)
,
concatMapSingle(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper, int bufferSize)
SingleSource
s and subscribes to them one after the
other succeeds, emits their success values or terminates immediately if
either the current Observable
or the current inner SingleSource
fail.
concatMapSingle
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner SingleSource
smapper
- the function called with the upstream item and should return
a SingleSource
to become the next source to
be subscribed tobufferSize
- The number of upstream items expected to be buffered so that fresh items are
ready to be mapped when a previous SingleSource
terminates.Observable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapSingle(Function)
,
concatMapSingleDelayError(Function, boolean, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
SingleSource
s and subscribes to them one after the
other succeeds or fails, emits their success values and delays all errors
till both the current Observable
and all inner SingleSource
s terminate.
concatMapSingleDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner SingleSource
smapper
- the function called with the upstream item and should return
a SingleSource
to become the next source to
be subscribed toObservable
instanceNullPointerException
- if mapper
is null
concatMapSingle(Function)
,
concatMapSingleDelayError(Function, boolean)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper, boolean tillTheEnd)
SingleSource
s and subscribes to them one after the
other succeeds or fails, emits their success values and optionally delays all errors
till both the current Observable
and all inner SingleSource
s terminate.
concatMapSingleDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner SingleSource
smapper
- the function called with the upstream item and should return
a SingleSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner SingleSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
SingleSource
terminates and only then is
it emitted to the downstream.Observable
instanceNullPointerException
- if mapper
is null
concatMapSingle(Function, int)
,
concatMapSingleDelayError(Function, boolean, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper, boolean tillTheEnd, int bufferSize)
SingleSource
s and subscribes to them one after the
other succeeds or fails, emits their success values and optionally delays errors
till both the current Observable
and all inner SingleSource
s terminate.
concatMapSingleDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the result type of the inner SingleSource
smapper
- the function called with the upstream item and should return
a SingleSource
to become the next source to
be subscribed totillTheEnd
- If true
, errors from the current Observable
or any of the
inner SingleSource
s are delayed until all
of them terminate. If false
, an error from the current
Observable
is delayed until the current inner
SingleSource
terminates and only then is
it emitted to the downstream.bufferSize
- The number of upstream items expected to be buffered so that fresh items are
ready to be mapped when a previous SingleSource
terminates.Observable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveconcatMapSingle(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> concatWith(@NonNull ObservableSource<? extends T> other)
Observable
that first emits the items emitted from the current Observable
, then items
from the other
ObservableSource
without interleaving them.
concatWith
does not operate by default on a particular Scheduler
.other
- an ObservableSource
to be concatenated after the currentObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> concatWith(@NonNull SingleSource<? extends T> other)
Observable
that emits the items from the current Observable
followed by the success item or error event
of the other
SingleSource
.
concatWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the SingleSource
whose signal should be emitted after the current Observable
completes normally.Observable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> concatWith(@NonNull MaybeSource<? extends T> other)
Observable
that emits the items from the current Observable
followed by the success item or terminal events
of the other MaybeSource
.
concatWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the MaybeSource
whose signal should be emitted after the current Observable
completes normally.Observable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> concatWith(@NonNull CompletableSource other)
Observable
that emits items from the current Observable
and when it completes normally, the
other CompletableSource
is subscribed to and the returned Observable
emits its terminal events.
concatWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the CompletableSource
to subscribe to once the current Observable
completes normallyObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Boolean> contains(@NonNull Object item)
Single
that emits a Boolean
that indicates whether the current Observable
emitted a
specified item.
contains
does not operate by default on a particular Scheduler
.item
- the item to search for in the emissions from the current Observable
Single
instanceNullPointerException
- if item
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Long> count()
Single
that counts the total number of items emitted by the current Observable
and emits
this count as a 64-bit Long
.
count
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> debounce(@NonNull Function<? super T,? extends ObservableSource<U>> debounceIndicator)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by another item within a computed debounce duration
denoted by an item emission or completion from a generated inner ObservableSource
for that original item.
The delivery of the item happens on the thread of the first onNext
or onComplete
signal of the generated ObservableSource
sequence,
which if takes too long, a newer item may arrive from the upstream, causing the
generated sequence to get disposed, which may also interrupt any downstream blocking operation
(yielding an InterruptedException
). It is recommended processing items
that may take long time to be moved to another thread via observeOn(io.reactivex.rxjava3.core.Scheduler)
applied after
debounce
itself.
debounce
does not operate by default on a particular Scheduler
.U
- the debounce value type (ignored)debounceIndicator
- function to return a sequence that indicates the throttle duration for each item via its own emission or completionObservable
instanceNullPointerException
- if debounceIndicator
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> debounce(long timeout, @NonNull TimeUnit unit)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires. The timer resets on
each emission.
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
Delivery of the item after the grace period happens on the computation
Scheduler
's
Worker
which if takes too long, a newer item may arrive from the upstream, causing the
Worker
's task to get disposed, which may also interrupt any downstream blocking operation
(yielding an InterruptedException
). It is recommended processing items
that may take long time to be moved to another thread via observeOn(io.reactivex.rxjava3.core.Scheduler)
applied after
debounce
itself.
debounce
operates by default on the computation
Scheduler
.timeout
- the length of the window of time that must pass after the emission of an item from the current
Observable
in which the Observable
emits no items in order for the item to be emitted by the
resulting Observable
unit
- the unit of time for the specified timeout
Observable
instanceNullPointerException
- if unit
is null
throttleWithTimeout(long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> debounce(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires on a specified
Scheduler
. The timer resets on each emission.
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
Delivery of the item after the grace period happens on the given Scheduler
's
Worker
which if takes too long, a newer item may arrive from the upstream, causing the
Worker
's task to get disposed, which may also interrupt any downstream blocking operation
(yielding an InterruptedException
). It is recommended processing items
that may take long time to be moved to another thread via observeOn(io.reactivex.rxjava3.core.Scheduler)
applied after
debounce
itself.
Scheduler
this operator will use.timeout
- the time each item has to be "the most recent" of those emitted by the current Observable
to
ensure that it's not droppedunit
- the unit of time for the specified timeout
scheduler
- the Scheduler
to use internally to manage the timers that handle the timeout for each
itemObservable
instanceNullPointerException
- if unit
or scheduler
is null
throttleWithTimeout(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> debounce(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super T> onDropped)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires on a specified
Scheduler
. The timer resets on each emission.
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
Delivery of the item after the grace period happens on the given Scheduler
's
Worker
which if takes too long, a newer item may arrive from the upstream, causing the
Worker
's task to get disposed, which may also interrupt any downstream blocking operation
(yielding an InterruptedException
). It is recommended processing items
that may take long time to be moved to another thread via observeOn(io.reactivex.rxjava3.core.Scheduler)
applied after
debounce
itself.
Scheduler
this operator will use.timeout
- the time each item has to be "the most recent" of those emitted by the current Observable
to
ensure that it's not droppedunit
- the unit of time for the specified timeout
scheduler
- the Scheduler
to use internally to manage the timers that handle the timeout for each
itemonDropped
- called with the current entry when it has been replaced by a new oneObservable
instanceNullPointerException
- if unit
or scheduler
is null
} or onDropped
is null
throttleWithTimeout(long, TimeUnit, Scheduler, Consumer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> defaultIfEmpty(@NonNull T defaultItem)
Observable
that emits the items emitted by the current Observable
or a specified default item
if the current Observable
is empty.
defaultIfEmpty
does not operate by default on a particular Scheduler
.defaultItem
- the item to emit if the current Observable
emits no itemsObservable
instanceNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> delay(@NonNull Function<? super T,? extends ObservableSource<U>> itemDelayIndicator)
Observable
that delays the emissions of the current Observable
via
a per-item derived ObservableSource
's item emission or termination, on a per source item basis.
Note: the resulting Observable
will immediately propagate any onError
notification
from the current Observable
.
delay
does not operate by default on a particular Scheduler
.U
- the item delay value type (ignored)itemDelayIndicator
- a function that returns an ObservableSource
for each item emitted by the current Observable
, which is
then used to delay the emission of that item by the resulting Observable
until the ObservableSource
returned from itemDelay
emits an itemObservable
instanceNullPointerException
- if itemDelayIndicator
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> delay(long time, @NonNull TimeUnit unit)
Observable
that emits the items emitted by the current Observable
shifted forward in time by a
specified delay. An error notification from the current Observable
is not delayed.
delay
operates by default on the computation
Scheduler
.time
- the delay to shift the source byunit
- the TimeUnit
in which period
is definedObservable
instanceNullPointerException
- if unit
is null
delay(long, TimeUnit, boolean)
,
delay(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> delay(long time, @NonNull TimeUnit unit, boolean delayError)
Observable
that emits the items emitted by the current Observable
shifted forward in time by a
specified delay. If delayError
is true
, error notifications will also be delayed.
delay
operates by default on the computation
Scheduler
.time
- the delay to shift the source byunit
- the TimeUnit
in which period
is defineddelayError
- if true
, the upstream exception is signaled with the given delay, after all preceding normal elements,
if false
, the upstream exception is signaled immediatelyObservable
instanceNullPointerException
- if unit
is null
delay(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> delay(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits the items emitted by the current Observable
shifted forward in time by a
specified delay. An error notification from the current Observable
is not delayed.
Scheduler
this operator will use.time
- the delay to shift the source byunit
- the time unit of delay
scheduler
- the Scheduler
to use for delayingObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> delay(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError)
Observable
that emits the items emitted by the current Observable
shifted forward in time by a
specified delay. If delayError
is true
, error notifications will also be delayed.
Scheduler
this operator will use.time
- the delay to shift the source byunit
- the time unit of delay
scheduler
- the Scheduler
to use for delayingdelayError
- if true
, the upstream exception is signaled with the given delay, after all preceding normal elements,
if false
, the upstream exception is signaled immediatelyObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<T> delay(@NonNull ObservableSource<U> subscriptionIndicator, @NonNull Function<? super T,? extends ObservableSource<V>> itemDelayIndicator)
Observable
that delays the subscription to and emissions from the current Observable
via
ObservableSource
s for the subscription itself and on a per-item basis.
Note: the resulting Observable
will immediately propagate any onError
notification
from the current Observable
.
delay
does not operate by default on a particular Scheduler
.U
- the subscription delay value type (ignored)V
- the item delay value type (ignored)subscriptionIndicator
- a function that returns an ObservableSource
that triggers the subscription to the current Observable
once it emits any itemitemDelayIndicator
- a function that returns an ObservableSource
for each item emitted by the current Observable
, which is
then used to delay the emission of that item by the resulting Observable
until the ObservableSource
returned from itemDelay
emits an itemObservable
instanceNullPointerException
- if subscriptionIndicator
or itemDelayIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> delaySubscription(@NonNull ObservableSource<U> subscriptionIndicator)
Observable
that delays the subscription to the current Observable
until the other ObservableSource
emits an element or completes normally.
Scheduler
.U
- the value type of the other Observable
, irrelevantsubscriptionIndicator
- the other ObservableSource
that should trigger the subscription
to the current Observable
.Observable
instanceNullPointerException
- if subscriptionIndicator
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> delaySubscription(long time, @NonNull TimeUnit unit)
Observable
that delays the subscription to the current Observable
by a given amount of time.
delaySubscription
operates by default on the computation
Scheduler
.time
- the time to delay the subscriptionunit
- the time unit of delay
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> delaySubscription(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that delays the subscription to the current Observable
by a given amount of time,
both waiting and subscribing on a given Scheduler
.
Scheduler
this operator will use.time
- the time to delay the subscriptionunit
- the time unit of delay
scheduler
- the Scheduler
on which the waiting and subscription will happenObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> dematerialize(@NonNull Function<? super T,Notification<R>> selector)
Observable
that reverses the effect of materialize
by transforming the
Notification
objects extracted from the source items via a selector function
into their respective Observer
signal types.
The intended use of the selector
function is to perform a
type-safe identity mapping (see example) on a source that is already of type
Notification<T>
. The Java language doesn't allow
limiting instance methods to a certain generic argument shape, therefore,
a function is used to ensure the conversion remains type safe.
When the upstream signals an onError
or
onComplete
item, the
returned Observable
disposes of the flow and terminates with that type of terminal event:
Observable.just(createOnNext(1), createOnComplete(), createOnNext(2))
.doOnDispose(() -> System.out.println("Disposed!"));
.dematerialize(notification -> notification)
.test()
.assertResult(1);
If the upstream signals onError
or onComplete
directly, the flow is terminated
with the same event.
Observable.just(createOnNext(1), createOnNext(2))
.dematerialize(notification -> notification)
.test()
.assertResult(1, 2);
If this behavior is not desired, the completion can be suppressed by applying concatWith(ObservableSource)
with a never()
source.
dematerialize
does not operate by default on a particular Scheduler
.History: 2.2.4 - experimental
R
- the output value typeselector
- function that returns the upstream item and should return a Notification
to signal
the corresponding Observer
event to the downstream.Observable
instanceNullPointerException
- if selector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> distinct()
Observable
that emits all items emitted by the current Observable
that are distinct
based on Object.equals(Object)
comparison.
It is recommended the elements' class T
in the flow overrides the default Object.equals()
and Object.hashCode()
to provide meaningful comparison between items as the default Java
implementation only considers reference equivalence.
By default, distinct()
uses an internal HashSet
per Observer
to remember
previously seen items and uses Set.add(Object)
returning false
as the
indicator for duplicates.
Note that this internal HashSet
may grow unbounded as items won't be removed from it by
the operator. Therefore, using very long or infinite upstream (with very distinct elements) may lead
to OutOfMemoryError
.
Customizing the retention policy can happen only by providing a custom Collection
implementation
to the distinct(Function, Supplier)
overload.
distinct
does not operate by default on a particular Scheduler
.Observable
instancedistinct(Function)
,
distinct(Function, Supplier)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Observable<T> distinct(@NonNull Function<? super T,K> keySelector)
Observable
that emits all items emitted by the current Observable
that are distinct according
to a key selector function and based on Object.equals(Object)
comparison of the objects
returned by the key selector function.
It is recommended the keys' class K
overrides the default Object.equals()
and Object.hashCode()
to provide meaningful comparison between the key objects as the default
Java implementation only considers reference equivalence.
By default, distinct()
uses an internal HashSet
per Observer
to remember
previously seen keys and uses Set.add(Object)
returning false
as the
indicator for duplicates.
Note that this internal HashSet
may grow unbounded as keys won't be removed from it by
the operator. Therefore, using very long or infinite upstream (with very distinct keys) may lead
to OutOfMemoryError
.
Customizing the retention policy can happen only by providing a custom Collection
implementation
to the distinct(Function, Supplier)
overload.
distinct
does not operate by default on a particular Scheduler
.K
- the key typekeySelector
- a function that projects an emitted item to a key value that is used to decide whether an item
is distinct from another one or notObservable
instanceNullPointerException
- if keySelector
is null
distinct(Function, Supplier)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Observable<T> distinct(@NonNull Function<? super T,K> keySelector, @NonNull Supplier<? extends Collection<? super K>> collectionSupplier)
Observable
that emits all items emitted by the current Observable
that are distinct according
to a key selector function and based on Object.equals(Object)
comparison of the objects
returned by the key selector function.
It is recommended the keys' class K
overrides the default Object.equals()
and Object.hashCode()
to provide meaningful comparison between the key objects as
the default Java implementation only considers reference equivalence.
distinct
does not operate by default on a particular Scheduler
.K
- the key typekeySelector
- a function that projects an emitted item to a key value that is used to decide whether an item
is distinct from another one or notcollectionSupplier
- function called for each individual Observer
to return a Collection
subtype for holding the extracted
keys and whose add()
method's return indicates uniqueness.Observable
instanceNullPointerException
- if keySelector
or collectionSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> distinctUntilChanged()
Observable
that emits all items emitted by the current Observable
that are distinct from their
immediate predecessors based on Object.equals(Object)
comparison.
It is recommended the elements' class T
in the flow overrides the default Object.equals()
to provide
meaningful comparison between items as the default Java implementation only considers reference equivalence.
Alternatively, use the distinctUntilChanged(BiPredicate)
overload and provide a comparison function
in case the class T
can't be overridden with custom equals()
or the comparison itself
should happen on different terms or properties of the class T
.
Note that the operator always retains the latest item from upstream regardless of the comparison result and uses it in the next comparison with the next upstream item.
Note that if element type T
in the flow is mutable, the comparison of the previous and current
item may yield unexpected results if the items are mutated externally. Common cases are mutable
CharSequence
s or List
s where the objects will actually have the same
references when they are modified and distinctUntilChanged
will evaluate subsequent items as same.
To avoid such situation, it is recommended that mutable data is converted to an immutable one,
for example using map(CharSequence::toString)
or map(list -> Collections.unmodifiableList(new ArrayList<>(list)))
.
distinctUntilChanged
does not operate by default on a particular Scheduler
.Observable
instancedistinctUntilChanged(BiPredicate)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Observable<T> distinctUntilChanged(@NonNull Function<? super T,K> keySelector)
Observable
that emits all items emitted by the current Observable
that are distinct from their
immediate predecessors, according to a key selector function and based on Object.equals(Object)
comparison
of those objects returned by the key selector function.
It is recommended the keys' class K
overrides the default Object.equals()
to provide
meaningful comparison between the key objects as the default Java implementation only considers reference equivalence.
Alternatively, use the distinctUntilChanged(BiPredicate)
overload and provide a comparison function
in case the class K
can't be overridden with custom equals()
or the comparison itself
should happen on different terms or properties of the item class T
(for which the keys can be
derived via a similar selector).
Note that the operator always retains the latest key from upstream regardless of the comparison result and uses it in the next comparison with the next key derived from the next upstream item.
Note that if element type T
in the flow is mutable, the comparison of the previous and current
item may yield unexpected results if the items are mutated externally. Common cases are mutable
CharSequence
s or List
s where the objects will actually have the same
references when they are modified and distinctUntilChanged
will evaluate subsequent items as same.
To avoid such situation, it is recommended that mutable data is converted to an immutable one,
for example using map(CharSequence::toString)
or map(list -> Collections.unmodifiableList(new ArrayList<>(list)))
.
distinctUntilChanged
does not operate by default on a particular Scheduler
.K
- the key typekeySelector
- a function that projects an emitted item to a key value that is used to decide whether an item
is distinct from another one or notObservable
instanceNullPointerException
- if keySelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> distinctUntilChanged(@NonNull BiPredicate<? super T,? super T> comparer)
Observable
that emits all items emitted by the current Observable
that are distinct from their
immediate predecessors when compared with each other via the provided comparator function.
Note that the operator always retains the latest item from upstream regardless of the comparison result and uses it in the next comparison with the next upstream item.
Note that if element type T
in the flow is mutable, the comparison of the previous and current
item may yield unexpected results if the items are mutated externally. Common cases are mutable
CharSequence
s or List
s where the objects will actually have the same
references when they are modified and distinctUntilChanged
will evaluate subsequent items as same.
To avoid such situation, it is recommended that mutable data is converted to an immutable one,
for example using map(CharSequence::toString)
or map(list -> Collections.unmodifiableList(new ArrayList<>(list)))
.
distinctUntilChanged
does not operate by default on a particular Scheduler
.comparer
- the function that receives the previous item and the current item and is
expected to return true
if the two are equal, thus skipping the current value.Observable
instanceNullPointerException
- if comparer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doAfterNext(@NonNull Consumer<? super T> onAfterNext)
Consumer
with the current item after this item has been emitted to the downstream.
Note that the onAfterNext
action is shared between subscriptions and as such
should be thread-safe.
doAfterNext
does not operate by default on a particular Scheduler
.History: 2.0.1 - experimental
onAfterNext
- the Consumer
that will be called after emitting an item from upstream to the downstreamObservable
instanceNullPointerException
- if onAfterNext
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doAfterTerminate(@NonNull Action onAfterTerminate)
Action
to be called when the current Observable
invokes either
onComplete
or onError
.
doAfterTerminate
does not operate by default on a particular Scheduler
.onAfterTerminate
- an Action
to be invoked after the current Observable
finishesObservable
instanceNullPointerException
- if onAfterTerminate
is null
doOnTerminate(Action)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doFinally(@NonNull Action onFinally)
Observable
signals onError
or onCompleted
or gets disposed by
the downstream.
In case of a race between a terminal event and a dispose call, the provided onFinally
action
is executed once per subscription.
Note that the onFinally
action is shared between subscriptions and as such
should be thread-safe.
doFinally
does not operate by default on a particular Scheduler
.History: 2.0.1 - experimental
onFinally
- the action called when the current Observable
terminates or gets disposedObservable
instanceNullPointerException
- if onFinally
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnDispose(@NonNull Action onDispose)
Action
if the downstream disposes the sequence.
The action is shared between subscriptions and thus may be called concurrently from multiple threads; the action must be thread safe.
If the action throws a runtime exception, that exception is rethrown by the dispose()
call,
sometimes as a CompositeException
if there were multiple exceptions along the way.
doOnDispose
does not operate by default on a particular Scheduler
.onDispose
- the action that gets called when the current Observable
's Disposable
is disposedObservable
instanceNullPointerException
- if onDispose
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnComplete(@NonNull Action onComplete)
Observable
that invokes an Action
when the current Observable
calls onComplete
.
doOnComplete
does not operate by default on a particular Scheduler
.onComplete
- the action to invoke when the current Observable
calls onComplete
Observable
instanceNullPointerException
- if onComplete
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnEach(@NonNull Consumer<? super Notification<T>> onNotification)
Observable
that invokes a Consumer
with the appropriate Notification
object when the current Observable
signals an item or terminates.
doOnEach
does not operate by default on a particular Scheduler
.onNotification
- the action to invoke for each item emitted by the current Observable
Observable
instanceNullPointerException
- if onNotification
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnEach(@NonNull Observer<? super T> observer)
Observable
that forwards the items and terminal events of the current
Observable
to its Observer
s and to the given shared Observer
instance.
In case the onError
of the supplied observer throws, the downstream will receive a composite
exception containing the original exception and the exception thrown by onError
. If either the
onNext
or the onComplete
method of the supplied observer throws, the downstream will be
terminated and will receive this thrown exception.
doOnEach
does not operate by default on a particular Scheduler
.observer
- the observer to be notified about onNext
, onError
and onComplete
events on its
respective methods before the actual downstream Observer
gets notified.Observable
instanceNullPointerException
- if observer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnError(@NonNull Consumer<? super Throwable> onError)
Consumer
with the error Throwable
if the current Observable
failed before forwarding it to
the downstream.
In case the onError
action throws, the downstream will receive a composite exception containing
the original exception and the exception thrown by onError
.
doOnError
does not operate by default on a particular Scheduler
.onError
- the action to invoke if the current Observable
calls onError
Observable
instanceNullPointerException
- if onError
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnLifecycle(@NonNull Consumer<? super Disposable> onSubscribe, @NonNull Action onDispose)
onXXX
method (shared between all Observer
s) for the lifecycle events of
the sequence (subscription, disposal).
doOnLifecycle
does not operate by default on a particular Scheduler
.onSubscribe
- a Consumer
called with the Disposable
sent via Observer.onSubscribe(Disposable)
onDispose
- called when the downstream disposes the Disposable
via dispose()
Observable
instanceNullPointerException
- if onSubscribe
or onDispose
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnNext(@NonNull Consumer<? super T> onNext)
Consumer
with the value emitted by the current Observable
before forwarding it to the downstream.
doOnNext
does not operate by default on a particular Scheduler
.onNext
- the action to invoke when the current Observable
calls onNext
Observable
instanceNullPointerException
- if onNext
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnSubscribe(@NonNull Consumer<? super Disposable> onSubscribe)
Observable
so that it invokes the given Consumer
when the current Observable
is subscribed from
its Observer
s. Each subscription will result in an invocation of the given action except when the
current Observable
is reference counted, in which case the current Observable
will invoke
the given action for the first subscription.
doOnSubscribe
does not operate by default on a particular Scheduler
.onSubscribe
- the Consumer
that gets called when an Observer
subscribes to the current Observable
Observable
instanceNullPointerException
- if onSubscribe
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> doOnTerminate(@NonNull Action onTerminate)
Observable
so that it invokes an action when the current Observable
calls onComplete
or
onError
.
This differs from doAfterTerminate
in that this happens before the onComplete
or
onError
notification.
doOnTerminate
does not operate by default on a particular Scheduler
.onTerminate
- the action to invoke when the current Observable
calls onComplete
or onError
Observable
instanceNullPointerException
- if onTerminate
is null
doAfterTerminate(Action)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> elementAt(long index)
Maybe
that emits the single item at a specified index in a sequence of emissions from
the current Observable
or completes if the current Observable
signals fewer elements than index.
elementAt
does not operate by default on a particular Scheduler
.index
- the zero-based index of the item to retrieveMaybe
instanceIndexOutOfBoundsException
- if index
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> elementAt(long index, @NonNull T defaultItem)
Single
that emits the item found at a specified index in a sequence of emissions from
the current Observable
, or a default item if that index is out of range.
elementAt
does not operate by default on a particular Scheduler
.index
- the zero-based index of the item to retrievedefaultItem
- the default itemSingle
instanceNullPointerException
- if defaultItem
is null
IndexOutOfBoundsException
- if index
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> elementAtOrError(long index)
Single
that emits the item found at a specified index in a sequence of emissions from the current Observable
or signals a NoSuchElementException
if the current Observable
signals fewer elements than index.
elementAtOrError
does not operate by default on a particular Scheduler
.index
- the zero-based index of the item to retrieveSingle
instanceIndexOutOfBoundsException
- if index
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> filter(@NonNull Predicate<? super T> predicate)
Observable
by only emitting those that satisfy a specified Predicate
.
filter
does not operate by default on a particular Scheduler
.predicate
- a function that evaluates each item emitted by the current Observable
, returning true
if it passes the filterObservable
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> firstElement()
Maybe
that emits only the very first item emitted by the current Observable
, or
completes if the current Observable
is empty.
firstElement
does not operate by default on a particular Scheduler
.Maybe
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> first(@NonNull T defaultItem)
Single
that emits only the very first item emitted by the current Observable
, or a default item
if the current Observable
completes without emitting any items.
first
does not operate by default on a particular Scheduler
.defaultItem
- the default item to emit if the current Observable
doesn't emit anythingSingle
instanceNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> firstOrError()
Single
that emits only the very first item emitted by the current Observable
or
signals a NoSuchElementException
if the current Observable
is empty.
firstOrError
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Observable
that emits items based on applying a function that you supply to each item emitted
by the current Observable
, where that function returns an ObservableSource
, and then merging those returned
ObservableSource
s and emitting the results of this merger.
flatMap
does not operate by default on a particular Scheduler
.R
- the value type of the inner ObservableSource
s and the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean delayErrors)
Observable
that emits items based on applying a function that you supply to each item emitted
by the current Observable
, where that function returns an ObservableSource
, and then merging those returned
ObservableSource
s and emitting the results of this merger.
flatMap
does not operate by default on a particular Scheduler
.R
- the value type of the inner ObservableSource
s and the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
delayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelyObservable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean delayErrors, int maxConcurrency)
Observable
that emits items based on applying a function that you supply to each item emitted
by the current Observable
, where that function returns an ObservableSource
, and then merging those returned
ObservableSource
s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.R
- the value type of the inner ObservableSource
s and the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlydelayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelyObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, boolean delayErrors, int maxConcurrency, int bufferSize)
Observable
that emits items based on applying a function that you supply to each item emitted
by the current Observable
, where that function returns an ObservableSource
, and then merging those returned
ObservableSource
s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.R
- the value type of the inner ObservableSource
s and the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlydelayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelybufferSize
- the number of elements expected from each inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> onNextMapper, @NonNull Function<? super Throwable,? extends ObservableSource<? extends R>> onErrorMapper, @NonNull Supplier<? extends ObservableSource<? extends R>> onCompleteSupplier)
Observable
that applies a function to each item emitted or notification raised by the current
Observable
and then flattens the ObservableSource
s returned from these functions and emits the resulting items.
flatMap
does not operate by default on a particular Scheduler
.R
- the result typeonNextMapper
- a function that returns an ObservableSource
to merge for each item emitted by the current Observable
onErrorMapper
- a function that returns an ObservableSource
to merge for an onError
notification from the current
Observable
onCompleteSupplier
- a function that returns an ObservableSource
to merge for an onComplete
notification from the current
Observable
Observable
instanceNullPointerException
- if onNextMapper
or onErrorMapper
or onCompleteSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> onNextMapper, @NonNull Function<Throwable,? extends ObservableSource<? extends R>> onErrorMapper, @NonNull Supplier<? extends ObservableSource<? extends R>> onCompleteSupplier, int maxConcurrency)
Observable
that applies a function to each item emitted or notification raised by the current
Observable
and then flattens the ObservableSource
s returned from these functions and emits the resulting items,
while limiting the maximum number of concurrent subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.R
- the result typeonNextMapper
- a function that returns an ObservableSource
to merge for each item emitted by the current Observable
onErrorMapper
- a function that returns an ObservableSource
to merge for an onError
notification from the current
Observable
onCompleteSupplier
- a function that returns an ObservableSource
to merge for an onComplete
notification from the current
Observable
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if onNextMapper
or onErrorMapper
or onCompleteSupplier
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int maxConcurrency)
Observable
that emits items based on applying a function that you supply to each item emitted
by the current Observable
, where that function returns an ObservableSource
, and then merging those returned
ObservableSource
s and emitting the results of this merger, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.R
- the value type of the inner ObservableSource
s and the output typemapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends R> combiner)
Observable
that emits the results of a specified function to the pair of values emitted by the
current Observable
and the mapped inner ObservableSource
.
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the collection ObservableSource
R
- the type of items emitted by the resulting Observable
mapper
- a function that returns an ObservableSource
for each item emitted by the current Observable
combiner
- a function that combines one item emitted by each of the source and collection ObservableSource
s and
returns an item to be emitted by the resulting Observable
Observable
instanceNullPointerException
- if mapper
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends R> combiner, boolean delayErrors)
Observable
that emits the results of a specified function to the pair of values emitted by the
current Observable
and the mapped inner ObservableSource
.
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the collection ObservableSource
R
- the type of items emitted by the resulting Observable
mapper
- a function that returns an ObservableSource
for each item emitted by the current Observable
combiner
- a function that combines one item emitted by each of the source and collection ObservableSource
s and
returns an item to be emitted by the resulting Observable
delayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelyObservable
instanceNullPointerException
- if mapper
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends R> combiner, boolean delayErrors, int maxConcurrency)
Observable
that emits the results of a specified function to the pair of values emitted by the
current Observable
and the mapped inner ObservableSource
, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the collection ObservableSource
R
- the type of items emitted by the resulting Observable
mapper
- a function that returns an ObservableSource
for each item emitted by the current Observable
combiner
- a function that combines one item emitted by each of the source and collection ObservableSource
s and
returns an item to be emitted by the resulting Observable
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlydelayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelyObservable
instanceNullPointerException
- if mapper
or combiner
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends R> combiner, boolean delayErrors, int maxConcurrency, int bufferSize)
Observable
that emits the results of a specified function to the pair of values emitted by the
current Observable
and the mapped inner ObservableSource
, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the collection ObservableSource
R
- the type of items emitted by the resulting Observable
mapper
- a function that returns an ObservableSource
for each item emitted by the current Observable
combiner
- a function that combines one item emitted by each of the source and collection ObservableSource
s and
returns an item to be emitted by the resulting Observable
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlydelayErrors
- if true
, exceptions from the current Observable
and all inner ObservableSource
s are delayed until all of them terminate
if false
, the first one signaling an exception will terminate the whole sequence immediatelybufferSize
- the number of elements expected from the inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if mapper
or combiner
is null
IllegalArgumentException
- if maxConcurrency
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> flatMap(@NonNull Function<? super T,? extends ObservableSource<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends R> combiner, int maxConcurrency)
Observable
that emits the results of a specified function to the pair of values emitted by the
current Observable
and the mapped inner ObservableSource
, while limiting the maximum number of concurrent
subscriptions to these ObservableSource
s.
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the collection ObservableSource
R
- the type of items emitted by the resulting Observable
mapper
- a function that returns an ObservableSource
for each item emitted by the current Observable
combiner
- a function that combines one item emitted by each of the source and collection ObservableSource
s and
returns an item to be emitted by the resulting Observable
maxConcurrency
- the maximum number of ObservableSource
s that may be subscribed to concurrentlyObservable
instanceNullPointerException
- if mapper
or combiner
is null
IllegalArgumentException
- if maxConcurrency
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable flatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Observable
into CompletableSource
s, subscribes to them and
waits until the upstream and all CompletableSource
s complete.
flatMapCompletable
does not operate by default on a particular Scheduler
.mapper
- the function that received each source value and transforms them into CompletableSource
s.Completable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable flatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper, boolean delayErrors)
Observable
into CompletableSource
s, subscribes to them and
waits until the upstream and all CompletableSource
s complete, optionally delaying all errors.
flatMapCompletable
does not operate by default on a particular Scheduler
.mapper
- the function that received each source value and transforms them into CompletableSource
s.delayErrors
- if true
, errors from the upstream and inner CompletableSource
s are delayed until all of them
terminate.Completable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<U> flatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Iterable
s generated by a mapper Function
for each individual item emitted by
the current Observable
into a single Observable
sequence.
flatMapIterable
does not operate by default on a particular Scheduler
.U
- the output type and the element type of the Iterable
smapper
- a function that returns an Iterable
sequence of values for when given an item emitted by the
current Observable
Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<V> flatMapIterable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper, @NonNull BiFunction<? super T,? super U,? extends V> combiner)
Iterable
s generated by a mapper Function
for each individual item emitted by
the current Observable
into a single Observable
sequence where the resulting items will
be the combination of the original item and each inner item of the respective Iterable
as returned
by the resultSelector
BiFunction
.
flatMapIterable
does not operate by default on a particular Scheduler
.U
- the element type of the Iterable
sV
- the output type as determined by the resultSelector
functionmapper
- a function that returns an Iterable
sequence of values for each item emitted by the current
Observable
combiner
- a function that returns an item based on the item emitted by the current Observable
and the
next item of the Iterable
returned for that original item by the mapper
Observable
instanceNullPointerException
- if mapper
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Observable
into MaybeSource
s, subscribes to all of them
and merges their onSuccess
values, in no particular order, into a single Observable
sequence.
flatMapMaybe
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that received each source value and transforms them into MaybeSource
s.Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper, boolean delayErrors)
Observable
into MaybeSource
s, subscribes to them
and merges their onSuccess
values, in no particular order, into a single Observable
sequence,
optionally delaying all errors.
flatMapMaybe
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that received each source value and transforms them into MaybeSource
s.delayErrors
- if true
, errors from the upstream and inner MaybeSource
s are delayed until all of them
terminate.Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Observable
into SingleSource
s, subscribes to all of them
and merges their onSuccess
values, in no particular order, into a single Observable
sequence.
flatMapSingle
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that received each source value and transforms them into SingleSource
s.Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper, boolean delayErrors)
Observable
into SingleSource
s, subscribes to them
and merges their onSuccess
values, in no particular order, into a single Observable
sequence,
optionally delaying all errors.
flatMapSingle
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- the function that received each source value and transforms them into SingleSource
s.delayErrors
- if true
, errors from the upstream and inner SingleSource
s are delayed until each of them
terminates.Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable forEach(@NonNull Consumer<? super T> onNext)
ObservableSource
and calls a Consumer
for each item of the current Observable
on its emission thread.
Alias to subscribe(Consumer)
forEach
does not operate by default on a particular Scheduler
.onNext
- the Consumer
to execute for each item.Disposable
that allows disposing the sequence if the current Observable
runs asynchronouslyNullPointerException
- if onNext
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable forEachWhile(@NonNull Predicate<? super T> onNext)
ObservableSource
and calls a Predicate
for each item of the current Observable
,
on its emission thread, until the predicate returns false
.
If the Observable
emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError(Throwable)
handler.
forEachWhile
does not operate by default on a particular Scheduler
.onNext
- the Predicate
to execute for each item.Disposable
that allows disposing the sequence if the current Observable
runs asynchronouslyNullPointerException
- if onNext
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable forEachWhile(@NonNull Predicate<? super T> onNext, @NonNull Consumer<? super Throwable> onError)
ObservableSource
and calls a Predicate
for each item or a Consumer
with the error
of the current Observable
, on their original emission threads, until the predicate returns false
.
forEachWhile
does not operate by default on a particular Scheduler
.onNext
- the Predicate
to execute for each item.onError
- the Consumer
to execute when an error is emitted.Disposable
that allows disposing the sequence if the current Observable
runs asynchronouslyNullPointerException
- if onNext
or onError
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable forEachWhile(@NonNull Predicate<? super T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete)
ObservableSource
and calls a Predicate
for each item, a Consumer
with the error
or an Action
upon completion of the current Observable
, on their original emission threads,
until the predicate returns false
.
forEachWhile
does not operate by default on a particular Scheduler
.onNext
- the Predicate
to execute for each item.onError
- the Consumer
to execute when an error is emitted.onComplete
- the Action
to execute when completion is signaled.Disposable
that allows disposing the sequence if the current Observable
runs asynchronouslyNullPointerException
- if onNext
or onError
or onComplete
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Observable<GroupedObservable<K,T>> groupBy(@NonNull Function<? super T,? extends K> keySelector)
Observable
according to a specified criterion, and emits these
grouped items as GroupedObservable
s.
Each emitted GroupedObservable
allows only a single Observer
to subscribe to it during its
lifetime and if this Observer
calls dispose()
before the
source terminates, the next emission by the source having the same key will trigger a new
GroupedObservable
emission.
Note: A GroupedObservable
will cache the items it is to emit until such time as it
is subscribed to. For this reason, in order to avoid memory leaks, you should not simply ignore those
GroupedObservable
s that do not concern you. Instead, you can signal to them that they may
discard their buffers by applying an operator like ignoreElements()
to them.
Note also that ignoring groups or subscribing later (i.e., on another thread) will result in so-called group abandonment where a group will only contain one element and the group will be re-created over and over as new upstream items trigger a new group. The behavior is a trade-off between no-dataloss, upstream cancellation and excessive group creation.
groupBy
does not operate by default on a particular Scheduler
.K
- the key typekeySelector
- a function that extracts the key for each itemObservable
instanceNullPointerException
- if keySelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Observable<GroupedObservable<K,T>> groupBy(@NonNull Function<? super T,? extends K> keySelector, boolean delayError)
Observable
according to a specified criterion, and emits these
grouped items as GroupedObservable
s.
Each emitted GroupedObservable
allows only a single Observer
to subscribe to it during its
lifetime and if this Observer
calls dispose()
before the
source terminates, the next emission by the source having the same key will trigger a new
GroupedObservable
emission.
Note: A GroupedObservable
will cache the items it is to emit until such time as it
is subscribed to. For this reason, in order to avoid memory leaks, you should not simply ignore those
GroupedObservable
s that do not concern you. Instead, you can signal to them that they may
discard their buffers by applying an operator like ignoreElements()
to them.
Note also that ignoring groups or subscribing later (i.e., on another thread) will result in so-called group abandonment where a group will only contain one element and the group will be re-created over and over as new upstream items trigger a new group. The behavior is a trade-off between no-dataloss, upstream cancellation and excessive group creation.
groupBy
does not operate by default on a particular Scheduler
.K
- the key typekeySelector
- a function that extracts the key for each itemdelayError
- if true
, the exception from the current Observable
is delayed in each group until that specific group emitted
the normal values; if false
, the exception bypasses values in the groups and is reported immediately.Observable
instanceNullPointerException
- if keySelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Observable<GroupedObservable<K,V>> groupBy(@NonNull Function<? super T,? extends K> keySelector, Function<? super T,? extends V> valueSelector)
Observable
according to a specified criterion, and emits these
grouped items as GroupedObservable
s.
Each emitted GroupedObservable
allows only a single Observer
to subscribe to it during its
lifetime and if this Observer
calls dispose()
before the
source terminates, the next emission by the source having the same key will trigger a new
GroupedObservable
emission.
Note: A GroupedObservable
will cache the items it is to emit until such time as it
is subscribed to. For this reason, in order to avoid memory leaks, you should not simply ignore those
GroupedObservable
s that do not concern you. Instead, you can signal to them that they may
discard their buffers by applying an operator like ignoreElements()
to them.
Note also that ignoring groups or subscribing later (i.e., on another thread) will result in so-called group abandonment where a group will only contain one element and the group will be re-created over and over as new upstream items trigger a new group. The behavior is a trade-off between no-dataloss, upstream cancellation and excessive group creation.
groupBy
does not operate by default on a particular Scheduler
.K
- the key typeV
- the element typekeySelector
- a function that extracts the key for each itemvalueSelector
- a function that extracts the return element for each itemObservable
instanceNullPointerException
- if keySelector
or valueSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Observable<GroupedObservable<K,V>> groupBy(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector, boolean delayError)
Observable
according to a specified criterion, and emits these
grouped items as GroupedObservable
s.
Each emitted GroupedObservable
allows only a single Observer
to subscribe to it during its
lifetime and if this Observer
calls dispose()
before the
source terminates, the next emission by the source having the same key will trigger a new
GroupedObservable
emission.
Note: A GroupedObservable
will cache the items it is to emit until such time as it
is subscribed to. For this reason, in order to avoid memory leaks, you should not simply ignore those
GroupedObservable
s that do not concern you. Instead, you can signal to them that they may
discard their buffers by applying an operator like ignoreElements()
to them.
Note also that ignoring groups or subscribing later (i.e., on another thread) will result in so-called group abandonment where a group will only contain one element and the group will be re-created over and over as new upstream items trigger a new group. The behavior is a trade-off between no-dataloss, upstream cancellation and excessive group creation.
groupBy
does not operate by default on a particular Scheduler
.K
- the key typeV
- the element typekeySelector
- a function that extracts the key for each itemvalueSelector
- a function that extracts the return element for each itemdelayError
- if true
, the exception from the current Observable
is delayed in each group until that specific group emitted
the normal values; if false
, the exception bypasses values in the groups and is reported immediately.Observable
instanceNullPointerException
- if keySelector
or valueSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Observable<GroupedObservable<K,V>> groupBy(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector, boolean delayError, int bufferSize)
Observable
according to a specified criterion, and emits these
grouped items as GroupedObservable
s.
Each emitted GroupedObservable
allows only a single Observer
to subscribe to it during its
lifetime and if this Observer
calls dispose()
before the
source terminates, the next emission by the source having the same key will trigger a new
GroupedObservable
emission.
Note: A GroupedObservable
will cache the items it is to emit until such time as it
is subscribed to. For this reason, in order to avoid memory leaks, you should not simply ignore those
GroupedObservable
s that do not concern you. Instead, you can signal to them that they may
discard their buffers by applying an operator like ignoreElements()
to them.
Note also that ignoring groups or subscribing later (i.e., on another thread) will result in so-called group abandonment where a group will only contain one element and the group will be re-created over and over as new upstream items trigger a new group. The behavior is a trade-off between no-dataloss, upstream cancellation and excessive group creation.
groupBy
does not operate by default on a particular Scheduler
.K
- the key typeV
- the element typekeySelector
- a function that extracts the key for each itemvalueSelector
- a function that extracts the return element for each itemdelayError
- if true
, the exception from the current Observable
is delayed in each group until that specific group emitted
the normal values; if false
, the exception bypasses values in the groups and is reported immediately.bufferSize
- the hint for how many GroupedObservable
s and element in each GroupedObservable
should be bufferedObservable
instanceNullPointerException
- if keySelector
or valueSelector
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <TRight,TLeftEnd,TRightEnd,R> @NonNull Observable<R> groupJoin(@NonNull ObservableSource<? extends TRight> other, @NonNull Function<? super T,? extends ObservableSource<TLeftEnd>> leftEnd, @NonNull Function<? super TRight,? extends ObservableSource<TRightEnd>> rightEnd, @NonNull BiFunction<? super T,? super Observable<TRight>,? extends R> resultSelector)
Observable
that correlates two ObservableSource
s when they overlap in time and groups the results.
There are no guarantees in what order the items get combined when multiple
items from one or both source ObservableSource
s overlap.
groupJoin
does not operate by default on a particular Scheduler
.TRight
- the value type of the right ObservableSource
sourceTLeftEnd
- the element type of the left duration ObservableSource
sTRightEnd
- the element type of the right duration ObservableSource
sR
- the result typeother
- the other ObservableSource
to correlate items from the current Observable
withleftEnd
- a function that returns an ObservableSource
whose emissions indicate the duration of the values of
the current Observable
rightEnd
- a function that returns an ObservableSource
whose emissions indicate the duration of the values of
the right
ObservableSource
resultSelector
- a function that takes an item emitted by each ObservableSource
and returns the value to be emitted
by the resulting Observable
Observable
instanceNullPointerException
- if other
, leftEnd
, rightEnd
or resultSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> hide()
Observable
and its Disposable
.
Allows hiding extra features such as Subject
's
Observer
methods or preventing certain identity-based
optimizations (fusion).
hide
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable ignoreElements()
Observable
and only calls onComplete
or onError
.
ignoreElements
does not operate by default on a particular Scheduler
.Completable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Boolean> isEmpty()
Single
that emits true
if the current Observable
is empty, otherwise false
.
In Rx.Net this is negated as the any
Observer
but we renamed this in RxJava to better match Java
naming idioms.
isEmpty
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <TRight,TLeftEnd,TRightEnd,R> @NonNull Observable<R> join(@NonNull ObservableSource<? extends TRight> other, @NonNull Function<? super T,? extends ObservableSource<TLeftEnd>> leftEnd, @NonNull Function<? super TRight,? extends ObservableSource<TRightEnd>> rightEnd, @NonNull BiFunction<? super T,? super TRight,? extends R> resultSelector)
ObservableSource
s based on overlapping durations.
There are no guarantees in what order the items get combined when multiple
items from one or both source ObservableSource
s overlap.
join
does not operate by default on a particular Scheduler
.TRight
- the value type of the right ObservableSource
sourceTLeftEnd
- the element type of the left duration ObservableSource
sTRightEnd
- the element type of the right duration ObservableSource
sR
- the result typeother
- the second ObservableSource
to join items fromleftEnd
- a function to select a duration for each item emitted by the current Observable
, used to
determine overlaprightEnd
- a function to select a duration for each item emitted by the right
ObservableSource
, used to
determine overlapresultSelector
- a function that computes an item to be emitted by the resulting Observable
for any two
overlapping items emitted by the two ObservableSource
sObservable
instanceNullPointerException
- if other
, leftEnd
, rightEnd
or resultSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> lastElement()
Maybe
that emits the last item emitted by the current Observable
or
completes if the current Observable
is empty.
lastElement
does not operate by default on a particular Scheduler
.Maybe
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> last(@NonNull T defaultItem)
Single
that emits only the last item emitted by the current Observable
, or a default item
if the current Observable
completes without emitting any items.
last
does not operate by default on a particular Scheduler
.defaultItem
- the default item to emit if the current Observable
is emptySingle
instanceNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> lastOrError()
Single
that emits only the last item emitted by the current Observable
or
signals a NoSuchElementException
if the current Observable
is empty.
lastOrError
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> lift(@NonNull ObservableOperator<? extends R,? super T> lifter)
Observable
which, when subscribed to, invokes the apply(Observer)
method
of the provided ObservableOperator
for each individual downstream Observer
and allows the
insertion of a custom operator by accessing the downstream's Observer
during this subscription phase
and providing a new Observer
, containing the custom operator's intended business logic, that will be
used in the subscription process going further upstream.
Generally, such a new Observer
will wrap the downstream's Observer
and forwards the
onNext
, onError
and onComplete
events from the upstream directly or according to the
emission pattern the custom operator's business logic requires. In addition, such operator can intercept the
flow control calls of dispose
and isDisposed
that would have traveled upstream and perform
additional actions depending on the same business logic requirements.
Example:
// Step 1: Create the consumer type that will be returned by the ObservableOperator.apply():
public final class CustomObserver<T> implements Observer<T>, Disposable {
// The downstream's Observer that will receive the onXXX events
final Observer<? super String> downstream;
// The connection to the upstream source that will call this class' onXXX methods
Disposable upstream;
// The constructor takes the downstream subscriber and usually any other parameters
public CustomObserver(Observer<? super String> downstream) {
this.downstream = downstream;
}
// In the subscription phase, the upstream sends a Disposable to this class
// and subsequently this class has to send a Disposable to the downstream.
// Note that relaying the upstream's Disposable directly is not allowed in RxJava
@Override
public void onSubscribe(Disposable d) {
if (upstream != null) {
d.dispose();
} else {
upstream = d;
downstream.onSubscribe(this);
}
}
// The upstream calls this with the next item and the implementation's
// responsibility is to emit an item to the downstream based on the intended
// business logic, or if it can't do so for the particular item,
// request more from the upstream
@Override
public void onNext(T item) {
String str = item.toString();
if (str.length() < 2) {
downstream.onNext(str);
}
// Observable doesn't support backpressure, therefore, there is no
// need or opportunity to call upstream.request(1) if an item
// is not produced to the downstream
}
// Some operators may handle the upstream's error while others
// could just forward it to the downstream.
@Override
public void onError(Throwable throwable) {
downstream.onError(throwable);
}
// When the upstream completes, usually the downstream should complete as well.
@Override
public void onComplete() {
downstream.onComplete();
}
// Some operators may use their own resources which should be cleaned up if
// the downstream disposes the flow before it completed. Operators without
// resources can simply forward the dispose to the upstream.
// In some cases, a disposed flag may be set by this method so that other parts
// of this class may detect the dispose and stop sending events
// to the downstream.
@Override
public void dispose() {
upstream.dispose();
}
// Some operators may simply forward the call to the upstream while others
// can return the disposed flag set in dispose().
@Override
public boolean isDisposed() {
return upstream.isDisposed();
}
}
// Step 2: Create a class that implements the ObservableOperator interface and
// returns the custom consumer type from above in its apply() method.
// Such class may define additional parameters to be submitted to
// the custom consumer type.
final class CustomOperator<T> implements ObservableOperator<String, T> {
@Override
public Observer<T> apply(Observer<? super String> downstream) {
return new CustomObserver<T>(downstream);
}
}
// Step 3: Apply the custom operator via lift() in a flow by creating an instance of it
// or reusing an existing one.
Observable.range(5, 10)
.lift(new CustomOperator<Integer>())
.test()
.assertResult("5", "6", "7", "8", "9");
Creating custom operators can be complicated and it is recommended one consults the RxJava wiki: Writing operators page about the tools, requirements, rules, considerations and pitfalls of implementing them.
Note that implementing custom operators via this lift()
method adds slightly more overhead by requiring
an additional allocation and indirection per assembled flows. Instead, extending the abstract Observable
class and creating an ObservableTransformer
with it is recommended.
Note also that it is not possible to stop the subscription phase in lift()
as the apply()
method
requires a non-null
Observer
instance to be returned, which is then unconditionally subscribed to
the current Observable
. For example, if the operator decided there is no reason to subscribe to the
upstream source because of some optimization possibility or a failure to prepare the operator, it still has to
return an Observer
that should immediately dispose the upstream's Disposable
in its
onSubscribe
method. Again, using an ObservableTransformer
and extending the Observable
is
a better option as subscribeActual(io.reactivex.rxjava3.core.Observer<? super T>)
can decide to not subscribe to its upstream after all.
lift
does not operate by default on a particular Scheduler
, however, the
ObservableOperator
may use a Scheduler
to support its own asynchronous behavior.R
- the output value typelifter
- the ObservableOperator
that receives the downstream's Observer
and should return
an Observer
with custom behavior to be used as the consumer for the current
Observable
.Observable
instanceNullPointerException
- if lifter
is null
compose(ObservableTransformer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> map(@NonNull Function<? super T,? extends R> mapper)
Observable
that applies a specified function to each item emitted by the current Observable
and
emits the results of these function applications.
map
does not operate by default on a particular Scheduler
.R
- the output typemapper
- a function to apply to each item emitted by the current Observable
Observable
instanceNullPointerException
- if mapper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Notification<T>> materialize()
Observable
that represents all of the emissions and notifications from the current
Observable
into emissions marked with their original types within Notification
objects.
materialize
does not operate by default on a particular Scheduler
.Observable
instancedematerialize(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> mergeWith(@NonNull ObservableSource<? extends T> other)
Observable
and another ObservableSource
into a single Observable
sequence, without any transformation.
You can combine items emitted by multiple ObservableSource
s so that they appear as a single ObservableSource
, by
using the mergeWith
method.
mergeWith
does not operate by default on a particular Scheduler
.other
- an ObservableSource
to be mergedObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> mergeWith(@NonNull SingleSource<? extends T> other)
Observable
with the success value of the other SingleSource
.
The success value of the other SingleSource
can get interleaved at any point of the current
Observable
sequence.
mergeWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the SingleSource
whose success value to merge withObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> mergeWith(@NonNull MaybeSource<? extends T> other)
Observable
with the success value of the other MaybeSource
or waits both to complete normally if the MaybeSource
is empty.
The success value of the other MaybeSource
can get interleaved at any point of the current
Observable
sequence.
mergeWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the MaybeSource
which provides a success value to merge with or completesObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> mergeWith(@NonNull CompletableSource other)
Observable
and completes only when the other CompletableSource
completes
as well.
mergeWith
does not operate by default on a particular Scheduler
.History: 2.1.10 - experimental
other
- the CompletableSource
to await for completionObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> observeOn(@NonNull Scheduler scheduler)
Observable
to perform the current Observable
's emissions and notifications on a specified Scheduler
,
asynchronously with an unbounded buffer with Flowable.bufferSize()
"island size".
Note that onError
notifications will cut ahead of onNext
notifications on the emission thread if Scheduler
is truly
asynchronous. If strict event ordering is required, consider using the observeOn(Scheduler, boolean)
overload.
This operator keeps emitting as many signals as it can on the given Scheduler
's worker thread,
which may result in a longer than expected occupation of this thread. In other terms,
it does not allow per-signal fairness in case the worker runs on a shared underlying thread.
If such fairness and signal/work interleaving is preferred, use the delay operator with zero time instead.
Scheduler
this operator will use."Island size" indicates how large chunks the unbounded buffer allocates to store the excess elements waiting to be consumed on the other side of the asynchronous boundary.
scheduler
- the Scheduler
to notify Observer
s onObservable
instanceNullPointerException
- if scheduler
is null
subscribeOn(io.reactivex.rxjava3.core.Scheduler)
,
observeOn(Scheduler, boolean)
,
observeOn(Scheduler, boolean, int)
,
delay(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> observeOn(@NonNull Scheduler scheduler, boolean delayError)
Observable
to perform the current Observable
's emissions and notifications on a specified Scheduler
,
asynchronously with an unbounded buffer with Flowable.bufferSize()
"island size" and optionally delays onError
notifications.
This operator keeps emitting as many signals as it can on the given Scheduler
's worker thread,
which may result in a longer than expected occupation of this thread. In other terms,
it does not allow per-signal fairness in case the worker runs on a shared underlying thread.
If such fairness and signal/work interleaving is preferred, use the delay operator with zero time instead.
Scheduler
this operator will use."Island size" indicates how large chunks the unbounded buffer allocates to store the excess elements waiting to be consumed on the other side of the asynchronous boundary.
scheduler
- the Scheduler
to notify Observer
s ondelayError
- indicates if the onError
notification may not cut ahead of onNext
notification on the other side of the
scheduling boundary. If true
, a sequence ending in onError
will be replayed in the same order as was received
from the current Observable
Observable
instanceNullPointerException
- if scheduler
is null
subscribeOn(io.reactivex.rxjava3.core.Scheduler)
,
observeOn(Scheduler)
,
observeOn(Scheduler, boolean, int)
,
delay(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> observeOn(@NonNull Scheduler scheduler, boolean delayError, int bufferSize)
Observable
to perform the current Observable
's emissions and notifications on a specified Scheduler
,
asynchronously with an unbounded buffer of configurable "island size" and optionally delays onError
notifications.
This operator keeps emitting as many signals as it can on the given Scheduler
's worker thread,
which may result in a longer than expected occupation of this thread. In other terms,
it does not allow per-signal fairness in case the worker runs on a shared underlying thread.
If such fairness and signal/work interleaving is preferred, use the delay operator with zero time instead.
Scheduler
this operator will use."Island size" indicates how large chunks the unbounded buffer allocates to store the excess elements waiting to be consumed on the other side of the asynchronous boundary. Values below 16 are not recommended in performance sensitive scenarios.
scheduler
- the Scheduler
to notify Observer
s ondelayError
- indicates if the onError
notification may not cut ahead of onNext
notification on the other side of the
scheduling boundary. If true
a sequence ending in onError
will be replayed in the same order as was received
from upstreambufferSize
- the size of the buffer.Observable
instanceNullPointerException
- if scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positivesubscribeOn(io.reactivex.rxjava3.core.Scheduler)
,
observeOn(Scheduler)
,
observeOn(Scheduler, boolean)
,
delay(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<U> ofType(@NonNull Class<U> clazz)
Observable
, only emitting those of the specified type.
ofType
does not operate by default on a particular Scheduler
.U
- the output typeclazz
- the class type to filter the items emitted by the current Observable
Observable
instanceNullPointerException
- if clazz
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onErrorComplete()
Observable
instance that if the current Observable
emits an error, it will emit an onComplete
and swallow the throwable.
onErrorComplete
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Observable<T> onErrorComplete(@NonNull Predicate<? super Throwable> predicate)
Observable
instance that if the current Observable
emits an error and the predicate returns
true
, it will emit an onComplete
and swallow the throwable.
onErrorComplete
does not operate by default on a particular Scheduler
.predicate
- the predicate to call when an Throwable
is emitted which should return true
if the Throwable
should be swallowed and replaced with an onComplete
.Observable
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onErrorResumeNext(@NonNull Function<? super Throwable,? extends ObservableSource<? extends T>> fallbackSupplier)
ObservableSource
returned for the failure Throwable
of the current Observable
by a
function instead of signaling the error via onError
.
By default, when an ObservableSource
encounters an error that prevents it from emitting the expected item to
its Observer
, the ObservableSource
invokes its Observer
's onError
method, and then quits
without invoking any more of its Observer
's methods. The onErrorResumeNext
method changes this
behavior. If you pass a function that returns an ObservableSource
(resumeFunction
) to
onErrorResumeNext
, if the original ObservableSource
encounters an error, instead of invoking its
Observer
's onError
method, it will instead relinquish control to the ObservableSource
returned from
resumeFunction
, which will invoke the Observer
's onNext
method if it is
able to do so. In such a case, because no ObservableSource
necessarily invokes onError
, the Observer
may never know that an error happened.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorResumeNext
does not operate by default on a particular Scheduler
.fallbackSupplier
- a function that returns an ObservableSource
that will take over if the current Observable
encounters
an errorObservable
instanceNullPointerException
- if fallbackSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onErrorResumeWith(@NonNull ObservableSource<? extends T> fallback)
ObservableSource
when the current Observable
fails instead of
signaling the error via onError
.
By default, when an ObservableSource
encounters an error that prevents it from emitting the expected item to
its Observer
, the ObservableSource
invokes its Observer
's onError
method, and then quits
without invoking any more of its Observer
's methods. The onErrorResumeWith
method changes this
behavior. If you pass another ObservableSource
(next
) to an ObservableSource
's
onErrorResumeWith
method, if the original ObservableSource
encounters an error, instead of invoking its
Observer
's onError
method, it will instead relinquish control to next
which
will invoke the Observer
's onNext
method if it is able to do so. In such a case,
because no ObservableSource
necessarily invokes onError
, the Observer
may never know that an error
happened.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorResumeWith
does not operate by default on a particular Scheduler
.fallback
- the next ObservableSource
source that will take over if the current Observable
encounters
an errorObservable
instanceNullPointerException
- if fallback
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onErrorReturn(@NonNull Function<? super Throwable,? extends T> itemSupplier)
Throwable
error signaled by the current
Observable
instead of signaling the error via onError
.
By default, when an ObservableSource
encounters an error that prevents it from emitting the expected item to
its Observer
, the ObservableSource
invokes its Observer
's onError
method, and then quits
without invoking any more of its Observer
's methods. The onErrorReturn
method changes this
behavior. If you pass a function (resumeFunction
) to an ObservableSource
's onErrorReturn
method, if the original ObservableSource
encounters an error, instead of invoking its Observer
's
onError
method, it will instead emit the return value of resumeFunction
.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorReturn
does not operate by default on a particular Scheduler
.itemSupplier
- a function that returns a single value that will be emitted along with a regular onComplete
in case
the current Observable
signals an onError
eventObservable
instanceNullPointerException
- if itemSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onErrorReturnItem(@NonNull T item)
Observable
fails instead of signaling the error via onError
.
By default, when an ObservableSource
encounters an error that prevents it from emitting the expected item to
its Observer
, the ObservableSource
invokes its Observer
's onError
method, and then quits
without invoking any more of its Observer
's methods. The onErrorReturn
method changes this
behavior. If you pass a function (resumeFunction
) to an ObservableSource
's onErrorReturn
method, if the original ObservableSource
encounters an error, instead of invoking its Observer
's
onError
method, it will instead emit the return value of resumeFunction
.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorReturnItem
does not operate by default on a particular Scheduler
.item
- the value that is emitted along with a regular onComplete
in case the current
Observable
signals an exceptionObservable
instanceNullPointerException
- if item
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> onTerminateDetach()
Observer
if
the sequence is terminated or downstream calls dispose()
.
onTerminateDetach
does not operate by default on a particular Scheduler
.Observable
instance
the sequence is terminated or downstream calls dispose()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull ConnectableObservable<T> publish()
ConnectableObservable
, which is a variety of ObservableSource
that waits until its
connect
method is called before it begins emitting items to those
Observer
s that have subscribed to it.
publish
does not operate by default on a particular Scheduler
.ConnectableObservable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> publish(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector)
Observable
that emits the results of invoking a specified selector on items emitted by a
ConnectableObservable
that shares a single subscription to the current Observable
sequence.
publish
does not operate by default on a particular Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- a function that can use the multicasted source sequence as many times as needed, without
causing multiple subscriptions to the source sequence. Observer
s to the given source will
receive all notifications of the source from the time of the subscription forward.Observable
instanceNullPointerException
- if selector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> reduce(@NonNull BiFunction<T,T,T> reducer)
Maybe
that applies a specified accumulator function to the first item emitted by the current
Observable
, then feeds the result of that function along with the second item emitted by the current
Observable
into the same function, and so on until all items have been emitted by the current and finite Observable
,
and emits the final result from the final call to your function as its sole item.
This technique, which is called "reduce" here, is sometimes called "aggregate," "fold," "accumulate,"
"compress," or "inject" in other programming contexts. Groovy, for instance, has an inject
method
that does a similar operation on lists.
Note that this operator requires the upstream to signal onComplete
for the accumulator object to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
reduce
does not operate by default on a particular Scheduler
.reducer
- an accumulator function to be invoked on each item emitted by the current Observable
, whose
result will be used in the next accumulator callMaybe
instanceNullPointerException
- if reducer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Single<R> reduce(R seed, @NonNull BiFunction<R,? super T,R> reducer)
Single
that applies a specified accumulator function to the first item emitted by the current
Observable
and a specified seed value, then feeds the result of that function along with the second item
emitted by the current Observable
into the same function, and so on until all items have been emitted by the
current and finite Observable
, emitting the final result from the final call to your function as its sole item.
This technique, which is called "reduce" here, is sometimes called "aggregate," "fold," "accumulate,"
"compress," or "inject" in other programming contexts. Groovy, for instance, has an inject
method
that does a similar operation on lists.
Note that the seed
is shared among all subscribers to the resulting Observable
and may cause problems if it is mutable. To make sure each subscriber gets its own value, defer
the application of this operator via defer(Supplier)
:
ObservableSource<T> source = ...
Single.defer(() -> source.reduce(new ArrayList<>(), (list, item) -> list.add(item)));
// alternatively, by using compose to stay fluent
source.compose(o ->
Observable.defer(() -> o.reduce(new ArrayList<>(), (list, item) -> list.add(item)).toObservable())
).firstOrError();
// or, by using reduceWith instead of reduce
source.reduceWith(() -> new ArrayList<>(), (list, item) -> list.add(item)));
Note that this operator requires the upstream to signal onComplete
for the accumulator object to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
reduce
does not operate by default on a particular Scheduler
.R
- the accumulator and output value typeseed
- the initial (seed) accumulator valuereducer
- an accumulator function to be invoked on each item emitted by the current Observable
, the
result of which will be used in the next accumulator callSingle
instanceNullPointerException
- if seed
or reducer
is null
reduceWith(Supplier, BiFunction)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Single<R> reduceWith(@NonNull Supplier<R> seedSupplier, @NonNull BiFunction<R,? super T,R> reducer)
Single
that applies a specified accumulator function to the first item emitted by the current
Observable
and a seed value derived from calling a specified seedSupplier
, then feeds the result
of that function along with the second item emitted by the current Observable
into the same function,
and so on until all items have been emitted by the current and finite Observable
, emitting the final result
from the final call to your function as its sole item.
This technique, which is called "reduce" here, is sometimes called "aggregate," "fold," "accumulate,"
"compress," or "inject" in other programming contexts. Groovy, for instance, has an inject
method
that does a similar operation on lists.
Note that this operator requires the upstream to signal onComplete
for the accumulator object to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
reduceWith
does not operate by default on a particular Scheduler
.R
- the accumulator and output value typeseedSupplier
- the Supplier
that provides the initial (seed) accumulator value for each individual Observer
reducer
- an accumulator function to be invoked on each item emitted by the current Observable
, the
result of which will be used in the next accumulator callSingle
instanceNullPointerException
- if seedSupplier
or reducer
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> repeat()
Observable
that repeats the sequence of items emitted by the current Observable
indefinitely.
repeat
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> repeat(long times)
Observable
that repeats the sequence of items emitted by the current Observable
at most
count
times.
repeat
does not operate by default on a particular Scheduler
.times
- the number of times the current Observable
items are repeated, a count of 0 will yield an empty
sequenceObservable
instanceIllegalArgumentException
- if times
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> repeatUntil(@NonNull BooleanSupplier stop)
Observable
that repeats the sequence of items emitted by the current Observable
until
the provided stop function returns true
.
repeatUntil
does not operate by default on a particular Scheduler
.stop
- a boolean supplier that is called when the current Observable
completes;
if it returns true
, the returned Observable
completes; if it returns false
,
the current Observable
is resubscribed.Observable
instanceNullPointerException
- if stop
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> repeatWhen(@NonNull Function<? super Observable<Object>,? extends ObservableSource<?>> handler)
Observable
that emits the same values as the current Observable
with the exception of an
onComplete
. An onComplete
notification from the source will result in the emission of
a void
item to the ObservableSource
provided as an argument to the notificationHandler
function. If that ObservableSource
calls onComplete
or onError
then repeatWhen
will
call onComplete
or onError
on the child subscription. Otherwise, the current Observable
will be resubscribed.
repeatWhen
does not operate by default on a particular Scheduler
.handler
- receives an ObservableSource
of notifications with which a user can complete or error, aborting the repeat.Observable
instanceNullPointerException
- if handler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull ConnectableObservable<T> replay()
ConnectableObservable
that shares a single subscription to the current Observable
that will replay all of its items and notifications to any future Observer
. A connectable
Observable
resembles an ordinary Observable
, except that it does not begin emitting items when it is
subscribed to, but only when its connect
method is called.
replay
does not operate by default on a particular Scheduler
.ConnectableObservable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector)
Observable
that emits items that are the results of invoking a specified selector on the items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
.
replay
does not operate by default on a particular Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- the selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
Observable
instanceNullPointerException
- if selector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, int bufferSize)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying bufferSize
notifications.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
replay
does not operate by default on a particular Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- the selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
bufferSize
- the buffer size that limits the number of items the connectable Observable
can replayObservable
instanceNullPointerException
- if selector
is null
IllegalArgumentException
- if bufferSize
is non-positivereplay(Function, int, boolean)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, int bufferSize, boolean eagerTruncate)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying bufferSize
notifications.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
replay
does not operate by default on a particular Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- the selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
bufferSize
- the buffer size that limits the number of items the connectable Observable
can replayeagerTruncate
- if true
, whenever the internal buffer is truncated to the given bufferSize, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionObservable
instanceNullPointerException
- if selector
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, int bufferSize, long time, @NonNull TimeUnit unit)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying no more than bufferSize
items that were emitted within a specified time window.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
replay
operates by default on the computation
Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
bufferSize
- the buffer size that limits the number of items the connectable Observable
can replaytime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
Observable
instanceNullPointerException
- if selector
or unit
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying no more than bufferSize
items that were emitted within a specified time window.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
Scheduler
this operator will use.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
bufferSize
- the buffer size that limits the number of items the connectable Observable
can replaytime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the Scheduler
that is the time source for the windowObservable
instanceIllegalArgumentException
- if bufferSize
is non-positiveNullPointerException
- if selector
, unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positivereplay(Function, int, long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying no more than bufferSize
items that were emitted within a specified time window.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
Scheduler
this operator will use.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
bufferSize
- the buffer size that limits the number of items the connectable Observable
can replaytime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the Scheduler
that is the time source for the windoweagerTruncate
- if true
, whenever the internal buffer is truncated to the given bufferSize/age, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionObservable
instanceNullPointerException
- if selector
, unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, long time, @NonNull TimeUnit unit)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying all items that were emitted within a specified time window.
replay
operates by default on the computation
Scheduler
.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
Observable
instanceNullPointerException
- if selector
or unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying all items that were emitted within a specified time window.
Scheduler
this operator will use.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the scheduler that is the time source for the windowObservable
instanceNullPointerException
- if selector
, unit
or scheduler
is null
replay(Function, long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final <R> @NonNull Observable<R> replay(@NonNull Function<? super Observable<T>,? extends ObservableSource<R>> selector, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate)
Observable
that emits items that are the results of invoking a specified selector on items
emitted by a ConnectableObservable
that shares a single subscription to the current Observable
,
replaying all items that were emitted within a specified time window.
Scheduler
this operator will use.R
- the type of items emitted by the resulting Observable
selector
- a selector function, which can use the multicasted sequence as many times as needed, without
causing multiple subscriptions to the current Observable
time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the scheduler that is the time source for the windoweagerTruncate
- if true
, whenever the internal buffer is truncated to the given age, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionObservable
instanceNullPointerException
- if selector
, unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull ConnectableObservable<T> replay(int bufferSize)
ConnectableObservable
that shares a single subscription to the current Observable
that
replays at most bufferSize
items emitted by the current Observable
. A connectable Observable
resembles
an ordinary Observable
, except that it does not begin emitting items when it is subscribed to, but only
when its connect
method is called.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
To ensure no beyond-bufferSize items are referenced,
use the replay(int, boolean)
overload with eagerTruncate = true
.
replay
does not operate by default on a particular Scheduler
.bufferSize
- the buffer size that limits the number of items that can be replayedConnectableObservable
instanceIllegalArgumentException
- if bufferSize
is non-positivereplay(int, boolean)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull ConnectableObservable<T> replay(int bufferSize, boolean eagerTruncate)
ConnectableObservable
that shares a single subscription to the current Observable
that
replays at most bufferSize
items emitted by the current Observable
. A connectable Observable
resembles
an ordinary Observable
, except that it does not begin emitting items when it is subscribed to, but only
when its connect
method is called.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
To ensure no beyond-bufferSize items are referenced, set eagerTruncate = true
.
replay
does not operate by default on a particular Scheduler
.bufferSize
- the buffer size that limits the number of items that can be replayedeagerTruncate
- if true
, whenever the internal buffer is truncated to the given bufferSize/age, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionConnectableObservable
instanceIllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull ConnectableObservable<T> replay(int bufferSize, long time, @NonNull TimeUnit unit)
ConnectableObservable
that shares a single subscription to the current Observable
and
replays at most bufferSize
items that were emitted during a specified time window. A connectable
Observable
resembles an ordinary Observable
, except that it does not begin emitting items when it is
subscribed to, but only when its connect
method is called.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
To ensure no out-of-date or beyond-bufferSize items are referenced,
use the replay(int, long, TimeUnit, Scheduler, boolean)
overload with eagerTruncate = true
.
replay
operates by default on the computation
Scheduler
.bufferSize
- the buffer size that limits the number of items that can be replayedtime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
ConnectableObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if bufferSize
is non-positivereplay(int, long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull ConnectableObservable<T> replay(int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
ConnectableObservable
that shares a single subscription to the current Observable
and
that replays a maximum of bufferSize
items that are emitted within a specified time window. A
connectable Observable
resembles an ordinary Observable
, except that it does not begin emitting items
when it is subscribed to, but only when its connect
method is called.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
To ensure no out-of-date or beyond-bufferSize items are referenced,
use the replay(int, long, TimeUnit, Scheduler, boolean)
overload with eagerTruncate = true
.
Scheduler
this operator will use.bufferSize
- the buffer size that limits the number of items that can be replayedtime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the scheduler that is used as a time source for the windowConnectableObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positivereplay(int, long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull ConnectableObservable<T> replay(int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate)
ConnectableObservable
that shares a single subscription to the current Observable
and
that replays a maximum of bufferSize
items that are emitted within a specified time window. A
connectable Observable
resembles an ordinary Observable
, except that it does not begin emitting items
when it is subscribed to, but only when its connect
method is called.
Note that due to concurrency requirements, replay(bufferSize)
may hold strong references to more than
bufferSize
source emissions.
To ensure no out-of-date or beyond-bufferSize items
are referenced, set eagerTruncate = true
.
Scheduler
this operator will use.bufferSize
- the buffer size that limits the number of items that can be replayedtime
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the scheduler that is used as a time source for the windoweagerTruncate
- if true
, whenever the internal buffer is truncated to the given bufferSize/age, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionConnectableObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull ConnectableObservable<T> replay(long time, @NonNull TimeUnit unit)
ConnectableObservable
that shares a single subscription to the current Observable
and
replays all items emitted by the current Observable
within a specified time window. A connectable Observable
resembles an ordinary Observable
, except that it does not begin emitting items when it is subscribed to,
but only when its connect
method is called.
replay
operates by default on the computation
Scheduler
.time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
ConnectableObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull ConnectableObservable<T> replay(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
ConnectableObservable
that shares a single subscription to the current Observable
and
replays all items emitted by the current Observable
within a specified time window. A connectable Observable
resembles an ordinary Observable
, except that it does not begin emitting items when it is subscribed to,
but only when its connect
method is called.
Note that the internal buffer may retain strong references to the oldest item. To ensure no out-of-date items
are referenced, use the replay(long, TimeUnit, Scheduler, boolean)
overload with eagerTruncate = true
.
Scheduler
this operator will use.time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the Scheduler
that is the time source for the windowConnectableObservable
instanceNullPointerException
- if unit
or scheduler
is null
replay(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull ConnectableObservable<T> replay(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate)
ConnectableObservable
that shares a single subscription to the current Observable
and
replays all items emitted by the current Observable
within a specified time window. A connectable Observable
resembles an ordinary Observable
, except that it does not begin emitting items when it is subscribed to,
but only when its connect
method is called.
Note that the internal buffer may retain strong references to the oldest item. To ensure no out-of-date items
are referenced, set eagerTruncate = true
.
Scheduler
this operator will use.time
- the duration of the window in which the replayed items must have been emittedunit
- the time unit of time
scheduler
- the Scheduler
that is the time source for the windoweagerTruncate
- if true
, whenever the internal buffer is truncated to the given bufferSize/age, the
oldest item will be guaranteed dereferenced, thus avoiding unexpected retentionConnectableObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retry()
Observable
that mirrors the current Observable
, resubscribing to it if it calls onError
(infinite retry count).
If the current Observable
calls Observer.onError(java.lang.Throwable)
, this method will resubscribe to the current
Observable
rather than propagating the onError
call.
Any and all items emitted by the current Observable
will be emitted by the resulting Observable
, even
those emitted during failed subscriptions. For example, if the current Observable
fails at first but emits
[1, 2]
then succeeds the second time and emits [1, 2, 3, 4, 5]
then the complete sequence
of emissions and notifications would be [1, 2, 1, 2, 3, 4, 5, onComplete]
.
retry
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retry(@NonNull BiPredicate<? super Integer,? super Throwable> predicate)
Observable
that mirrors the current Observable
, resubscribing to it if it calls onError
and the predicate returns true
for that specific exception and retry count.
retry
does not operate by default on a particular Scheduler
.predicate
- the predicate that determines if a resubscription may happen in case of a specific exception
and retry countObservable
instanceNullPointerException
- if predicate
is null
retry()
,
ReactiveX operators documentation: Retry@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retry(long times)
Observable
that mirrors the current Observable
, resubscribing to it if it calls onError
up to a specified number of retries.
If the current Observable
calls Observer.onError(java.lang.Throwable)
, this method will resubscribe to the current
Observable
for a maximum of count
resubscriptions rather than propagating the
onError
call.
Any and all items emitted by the current Observable
will be emitted by the resulting Observable
, even
those emitted during failed subscriptions. For example, if the current Observable
fails at first but emits
[1, 2]
then succeeds the second time and emits [1, 2, 3, 4, 5]
then the complete sequence
of emissions and notifications would be [1, 2, 1, 2, 3, 4, 5, onComplete]
.
retry
does not operate by default on a particular Scheduler
.times
- the number of times to resubscribe if the current Observable
failsObservable
instanceIllegalArgumentException
- if times
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retry(long times, @NonNull Predicate<? super Throwable> predicate)
false
, whichever happens first.
retry
does not operate by default on a particular Scheduler
.times
- the number of times to resubscribe if the current Observable
failspredicate
- the predicate called with the failure Throwable
and should return true
to trigger a retry.Observable
instanceNullPointerException
- if predicate
is null
IllegalArgumentException
- if times
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retry(@NonNull Predicate<? super Throwable> predicate)
Observable
if the predicate returns true
.
retry
does not operate by default on a particular Scheduler
.predicate
- the predicate that receives the failure Throwable
and should return true
to trigger a retry.Observable
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retryUntil(@NonNull BooleanSupplier stop)
true
.
retryUntil
does not operate by default on a particular Scheduler
.stop
- the function that should return true
to stop retryingObservable
instanceNullPointerException
- if stop
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> retryWhen(@NonNull Function<? super Observable<Throwable>,? extends ObservableSource<?>> handler)
Observable
that emits the same values as the current Observable
with the exception of an
onError
. An onError
notification from the source will result in the emission of a
Throwable
item to the Observable
provided as an argument to the notificationHandler
function. If that Observable
calls onComplete
or onError
then retry
will call
onComplete
or onError
on the child subscription. Otherwise, the current Observable
will be resubscribed.
Example: This retries 3 times, each time incrementing the number of seconds it waits.
Observable.create((ObservableEmitter<? 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);
});
}).blockingForEach(System.out::println);
Output is:
subscribing
delay retry by 1 second(s)
subscribing
delay retry by 2 second(s)
subscribing
delay retry by 3 second(s)
subscribing
Note that the inner ObservableSource
returned by the handler function should signal
either onNext
, onError
or onComplete
in response to the received
Throwable
to indicate the operator should retry or terminate. If the upstream to
the operator is asynchronous, signaling onNext
followed by onComplete
immediately may
result in the sequence to be completed immediately. Similarly, if this inner
ObservableSource
signals onError
or onComplete
while the upstream is
active, the sequence is terminated with the same signal immediately.
The following example demonstrates how to retry an asynchronous source with a delay:
Observable.timer(1, TimeUnit.SECONDS)
.doOnSubscribe(s -> System.out.println("subscribing"))
.map(v -> { throw new RuntimeException(); })
.retryWhen(errors -> {
AtomicInteger counter = new AtomicInteger();
return errors
.takeWhile(e -> counter.getAndIncrement() != 3)
.flatMap(e -> {
System.out.println("delay retry by " + counter.get() + " second(s)");
return Observable.timer(counter.get(), TimeUnit.SECONDS);
});
})
.blockingSubscribe(System.out::println, System.out::println);
retryWhen
does not operate by default on a particular Scheduler
.handler
- receives an Observable
of notifications with which a user can complete or error, aborting the
retryObservable
instanceNullPointerException
- if handler
is null
@SchedulerSupport(value="none") public final void safeSubscribe(@NonNull Observer<? super T> observer)
Observable
and wraps the given Observer
into a SafeObserver
(if not already a SafeObserver
) that
deals with exceptions thrown by a misbehaving Observer
(that doesn't follow the
Reactive Streams specification).
safeSubscribe
does not operate by default on a particular Scheduler
.observer
- the incoming Observer
instanceNullPointerException
- if observer
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> sample(long period, @NonNull TimeUnit unit)
Observable
that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals.
sample
operates by default on the computation
Scheduler
.period
- the sampling rateunit
- the TimeUnit
in which period
is definedObservable
instanceNullPointerException
- if unit
is null
throttleLast(long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> sample(long period, @NonNull TimeUnit unit, boolean emitLast)
Observable
that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals and optionally emit the very last upstream item when the upstream completes.
sample
operates by default on the computation
Scheduler
.History: 2.0.5 - experimental
period
- the sampling rateunit
- the TimeUnit
in which period
is definedemitLast
- if true
and the upstream completes while there is still an unsampled item available,
that item is emitted to downstream before completion
if false
, an unsampled last item is ignored.Observable
instanceNullPointerException
- if unit
is null
throttleLast(long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> sample(long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler
.
Scheduler
this operator will use.period
- the sampling rateunit
- the TimeUnit
in which period
is definedscheduler
- the Scheduler
to use when samplingObservable
instanceNullPointerException
- if unit
or scheduler
is null
throttleLast(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> sample(long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast)
Observable
that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler
and optionally emit the very last upstream item when the upstream completes.
Scheduler
this operator will use.History: 2.0.5 - experimental
period
- the sampling rateunit
- the TimeUnit
in which period
is definedscheduler
- the Scheduler
to use when samplingemitLast
- if true
and the upstream completes while there is still an unsampled item available,
that item is emitted to downstream before completion
if false
, an unsampled last item is ignored.Observable
instanceNullPointerException
- if unit
or scheduler
is null
throttleLast(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> sample(long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast, @NonNull Consumer<? super T> onDropped)
Observable
that emits the most recently emitted item (if any) emitted by the current Observable
within periodic time intervals, where the intervals are defined on a particular Scheduler
.
Scheduler
this operator will use.period
- the sampling rateunit
- the TimeUnit
in which period
is definedscheduler
- the Scheduler
to use when samplingemitLast
- if true
and the upstream completes while there is still an unsampled item available,
that item is emitted to downstream before completion
if false
, an unsampled last item is ignored.onDropped
- called with the current entry when it has been replaced by a new oneObservable
instanceNullPointerException
- if unit
or scheduler
is null
or onDropped
is null
throttleLast(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> sample(@NonNull ObservableSource<U> sampler)
Observable
that, when the specified sampler
ObservableSource
emits an item or completes,
emits the most recently emitted item (if any) emitted by the current Observable
since the previous
emission from the sampler
ObservableSource
.
sample
does not operate by default on a particular Scheduler
.U
- the element type of the sampler ObservableSource
sampler
- the ObservableSource
to use for sampling the current Observable
Observable
instanceNullPointerException
- if sampler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> sample(@NonNull ObservableSource<U> sampler, boolean emitLast)
Observable
that, when the specified sampler
ObservableSource
emits an item or completes,
emits the most recently emitted item (if any) emitted by the current Observable
since the previous
emission from the sampler
ObservableSource
and optionally emit the very last upstream item when the upstream or other ObservableSource
complete.
sample
does not operate by default on a particular Scheduler
.History: 2.0.5 - experimental
U
- the element type of the sampler ObservableSource
sampler
- the ObservableSource
to use for sampling the current Observable
emitLast
- if true
and the upstream completes while there is still an unsampled item available,
that item is emitted to downstream before completion
if false
, an unsampled last item is ignored.Observable
instanceNullPointerException
- if sampler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> scan(@NonNull BiFunction<T,T,T> accumulator)
Observable
that emits the first value emitted by the current Observable
, then emits one value
for each subsequent value emitted by the current Observable
. Each emission after the first is the result of
applying the specified accumulator function to the previous emission and the corresponding value from the current Observable
.
This sort of function is sometimes called an accumulator.
scan
does not operate by default on a particular Scheduler
.accumulator
- an accumulator function to be invoked on each item emitted by the current Observable
, whose
result will be emitted to Observer
s via onNext
and used in the
next accumulator callObservable
instanceNullPointerException
- if accumulator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> scan(@NonNull R initialValue, @NonNull BiFunction<R,? super T,R> accumulator)
Observable
that emits the provided initial (seed) value, then emits one value for each value emitted
by the current Observable
. Each emission after the first is the result of applying the specified accumulator
function to the previous emission and the corresponding value from the current Observable
.
This sort of function is sometimes called an accumulator.
Note that the Observable
that results from this method will emit initialValue
as its first
emitted item.
Note that the initialValue
is shared among all subscribers to the resulting Observable
and may cause problems if it is mutable. To make sure each subscriber gets its own value, defer
the application of this operator via defer(Supplier)
:
ObservableSource<T> source = ...
Observable.defer(() -> source.scan(new ArrayList<>(), (list, item) -> list.add(item)));
// alternatively, by using compose to stay fluent
source.compose(o ->
Observable.defer(() -> o.scan(new ArrayList<>(), (list, item) -> list.add(item)))
);
scan
does not operate by default on a particular Scheduler
.R
- the initial, accumulator and result typeinitialValue
- the initial (seed) accumulator itemaccumulator
- an accumulator function to be invoked on each item emitted by the current Observable
, whose
result will be emitted to Observer
s via onNext
and used in the
next accumulator callObservable
instanceNullPointerException
- if initialValue
or accumulator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> scanWith(@NonNull Supplier<R> seedSupplier, @NonNull BiFunction<R,? super T,R> accumulator)
Observable
that emits the provided initial (seed) value, then emits one value for each value emitted
by the current Observable
. Each emission after the first is the result of applying the specified accumulator
function to the previous emission and the corresponding value from the current Observable
.
This sort of function is sometimes called an accumulator.
Note that the Observable
that results from this method will emit the value returned
by the seedSupplier
as its first item.
scanWith
does not operate by default on a particular Scheduler
.R
- the initial, accumulator and result typeseedSupplier
- a Supplier
that returns the initial (seed) accumulator item for each individual Observer
accumulator
- an accumulator function to be invoked on each item emitted by the current Observable
, whose
result will be emitted to Observer
s via onNext
and used in the
next accumulator callObservable
instanceNullPointerException
- if seedSupplier
or accumulator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> serialize()
Observable
's emissions and notifications to be serialized and for it to obey
the ObservableSource
contract in other ways.
It is possible for an Observable
to invoke its Observer
s' methods asynchronously, perhaps from
different threads. This could make such an Observable
poorly-behaved, in that it might try to invoke
onComplete
or onError
before one of its onNext
invocations, or it might call
onNext
from two different threads concurrently. You can force such an Observable
to be
well-behaved and sequential by applying the serialize
method to it.
serialize
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> share()
Observable
that multicasts (and shares a single subscription to) the current Observable
. As long as
there is at least one Observer
, the current Observable
will stay subscribed and keep emitting signals.
When all observers have disposed, the operator will dispose the subscription to the current Observable
.
This is an alias for publish()
.refCount()
.
share
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> singleElement()
Maybe
that completes if the current Observable
is empty or emits the single item
emitted by the current Observable
, or signals an IllegalArgumentException
if the current
Observable
emits more than one item.
singleElement
does not operate by default on a particular Scheduler
.Maybe
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> single(@NonNull T defaultItem)
Single
that emits the single item emitted by the current Observable
, if the current Observable
emits only a single item, or a default item if the current Observable
emits no items. If the current
Observable
emits more than one item, an IllegalArgumentException
is signaled instead.
single
does not operate by default on a particular Scheduler
.defaultItem
- a default value to emit if the current Observable
emits no itemSingle
instanceNullPointerException
- if defaultItem
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> singleOrError()
Single
that emits the single item emitted by the current Observable
if it
emits only a single item, otherwise
if the current Observable
completes without emitting any items or emits more than one item a
NoSuchElementException
or IllegalArgumentException
will be signaled respectively.
singleOrError
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> skip(long count)
Observable
that skips the first count
items emitted by the current Observable
and emits
the remainder.
skip
does not operate by default on a particular Scheduler
.count
- the number of items to skipObservable
instanceIllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> skip(long time, @NonNull TimeUnit unit)
Observable
that skips values emitted by the current Observable
before a specified time window
elapses.
skip
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.time
- the length of the time window to skipunit
- the time unit of time
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> skip(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that skips values emitted by the current Observable
before a specified time window
on a specified Scheduler
elapses.
Scheduler
this operator will use for the timed skippingtime
- the length of the time window to skipunit
- the time unit of time
scheduler
- the Scheduler
on which the timed wait happensObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> skipLast(int count)
Observable
that drops a specified number of items from the end of the sequence emitted by the
current Observable
.
This Observer
accumulates a queue long enough to store the first count
items. As more items are
received, items are taken from the front of the queue and emitted by the returned Observable
. This causes
such items to be delayed.
skipLast
does not operate by default on a particular Scheduler
.count
- number of items to drop from the end of the source sequenceObservable
instanceIllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="io.reactivex:trampoline") @NonNull public final @NonNull Observable<T> skipLast(long time, @NonNull TimeUnit unit)
Observable
that drops items emitted by the current Observable
during a specified time window
before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
skipLast
does not operate on any particular scheduler but uses the current time
from the trampoline
Scheduler
.time
- the length of the time windowunit
- the time unit of time
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:trampoline") @NonNull public final @NonNull Observable<T> skipLast(long time, @NonNull TimeUnit unit, boolean delayError)
Observable
that drops items emitted by the current Observable
during a specified time window
before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
skipLast
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.time
- the length of the time windowunit
- the time unit of time
delayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> skipLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that drops items emitted by the current Observable
during a specified time window
(defined on a specified scheduler) before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
Scheduler
this operator will use for tracking the current timetime
- the length of the time windowunit
- the time unit of time
scheduler
- the scheduler used as the time sourceObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> skipLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError)
Observable
that drops items emitted by the current Observable
during a specified time window
(defined on a specified scheduler) before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
Scheduler
this operator will use to track the current timetime
- the length of the time windowunit
- the time unit of time
scheduler
- the scheduler used as the time sourcedelayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> skipLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize)
Observable
that drops items emitted by the current Observable
during a specified time window
(defined on a specified scheduler) before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
Scheduler
this operator will use.time
- the length of the time windowunit
- the time unit of time
scheduler
- the scheduler used as the time sourcedelayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedbufferSize
- the hint about how many elements to expect to be skippedObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> skipUntil(@NonNull ObservableSource<U> other)
Observable
that skips items emitted by the current Observable
until a second ObservableSource
emits
an item.
skipUntil
does not operate by default on a particular Scheduler
.U
- the element type of the other ObservableSource
other
- the second ObservableSource
that has to emit an item before the current Observable
's elements begin
to be mirrored by the resulting Observable
Observable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> skipWhile(@NonNull Predicate<? super T> predicate)
Observable
that skips all items emitted by the current Observable
as long as a specified
condition holds true
, but emits all further source items as soon as the condition becomes false
.
skipWhile
does not operate by default on a particular Scheduler
.predicate
- a function to test each item emitted from the current Observable
Observable
instanceNullPointerException
- if predicate
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> sorted()
Observable
that emits the events emitted by the current Observable
, in a
sorted order. Each item emitted by the current Observable
must implement Comparable
with respect to all
other items in the sequence.
If any item emitted by the current Observable
does not implement Comparable
with respect to
all other items emitted by the current Observable
, no items will be emitted and the
sequence is terminated with a ClassCastException
.
Note that calling sorted
with long, non-terminating or infinite sources
might cause OutOfMemoryError
sorted
does not operate by default on a particular Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> sorted(@NonNull Comparator<? super T> comparator)
Observable
that emits the events emitted by the current Observable
, in a
sorted order based on a specified comparison function.
Note that calling sorted
with long, non-terminating or infinite sources
might cause OutOfMemoryError
sorted
does not operate by default on a particular Scheduler
.comparator
- a function that compares two items emitted by the current Observable
and returns an int
that indicates their sort orderObservable
instanceNullPointerException
- if comparator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> startWithIterable(@NonNull Iterable<? extends T> items)
Observable
that emits the items in a specified Iterable
before it begins to emit items
emitted by the current Observable
.
startWithIterable
does not operate by default on a particular Scheduler
.items
- an Iterable
that contains the items you want the resulting Observable
to emit firstObservable
instanceNullPointerException
- if items
is null
startWithItem(Object)
,
startWithArray(Object...)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Observable<T> startWith(@NonNull CompletableSource other)
Observable
which first runs the other CompletableSource
then the current Observable
if the other completed normally.
startWith
does not operate by default on a particular Scheduler
.other
- the other CompletableSource
to run firstObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Observable<T> startWith(@NonNull SingleSource<T> other)
Observable
which first runs the other SingleSource
then the current Observable
if the other succeeded normally.
startWith
does not operate by default on a particular Scheduler
.other
- the other SingleSource
to run firstObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Observable<T> startWith(@NonNull MaybeSource<T> other)
Observable
which first runs the other MaybeSource
then the current Observable
if the other succeeded or completed normally.
startWith
does not operate by default on a particular Scheduler
.other
- the other MaybeSource
to run firstObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> startWith(@NonNull ObservableSource<? extends T> other)
Observable
that emits the items in a specified ObservableSource
before it begins to emit
items emitted by the current Observable
.
startWith
does not operate by default on a particular Scheduler
.other
- an ObservableSource
that contains the items you want the modified ObservableSource
to emit firstObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> startWithItem(@NonNull T item)
Observable
that emits a specified item before it begins to emit items emitted by the current
Observable
.
startWithItem
does not operate by default on a particular Scheduler
.item
- the item to emit firstObservable
instanceNullPointerException
- if item
is null
startWithArray(Object...)
,
startWithIterable(Iterable)
@CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public final @NonNull Observable<T> startWithArray(@NonNull T... items)
Observable
that emits the specified items before it begins to emit items emitted by the current
Observable
.
startWithArray
does not operate by default on a particular Scheduler
.items
- the array of values to emit firstObservable
instanceNullPointerException
- if items
is null
startWithItem(Object)
,
startWithIterable(Iterable)
@SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe()
Observable
and ignores onNext
and onComplete
emissions.
If the Observable
emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError(Throwable)
handler.
subscribe
does not operate by default on a particular Scheduler
.Disposable
instance that can be used to dispose the subscription at any timesubscribe(Consumer, Consumer, Action, DisposableContainer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull Consumer<? super T> onNext)
Observable
and provides a callback to handle the items it emits.
If the Observable
emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError(Throwable)
handler.
subscribe
does not operate by default on a particular Scheduler
.onNext
- the Consumer<T>
you have designed to accept emissions from the current Observable
Disposable
instance that can be used to dispose the subscription at any timeNullPointerException
- if onNext
is null
subscribe(Consumer, Consumer, Action, DisposableContainer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError)
Observable
and provides callbacks to handle the items it emits and any error
notification it signals.
subscribe
does not operate by default on a particular Scheduler
.onNext
- the Consumer<T>
you have designed to accept emissions from the current Observable
onError
- the Consumer<Throwable>
you have designed to accept any error notification from the current
Observable
Disposable
instance that can be used to dispose the subscription at any timeNullPointerException
- if onNext
or onError
is null
subscribe(Consumer, Consumer, Action, DisposableContainer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete)
Observable
and provides callbacks to handle the items it emits and any error or
completion notification it signals.
subscribe
does not operate by default on a particular Scheduler
.onNext
- the Consumer<T>
you have designed to accept emissions from the current Observable
onError
- the Consumer<Throwable>
you have designed to accept any error notification from the current
Observable
onComplete
- the Action
you have designed to accept a completion notification from the current
Observable
Disposable
instance that can be used to dispose the subscription at any timeNullPointerException
- if onNext
, onError
or onComplete
is null
subscribe(Consumer, Consumer, Action, DisposableContainer)
@SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete, @NonNull DisposableContainer container)
Disposable
Observer
,
adds it to the given DisposableContainer
and ensures, that if the upstream
terminates or this particular Disposable
is disposed, the Observer
is removed
from the given container.
The Observer
will be removed after the callback for the terminal event has been invoked.
subscribe
does not operate by default on a particular Scheduler
.onNext
- the callback for upstream itemsonError
- the callback for an upstream error if anyonComplete
- the callback for the upstream completion if anycontainer
- the DisposableContainer
(such as CompositeDisposable
) to add and remove the
created Disposable
Observer
Disposable
that allows disposing the particular subscription.NullPointerException
- if onNext
, onError
,
onComplete
or container
is null
@SchedulerSupport(value="none") public final void subscribe(@NonNull Observer<? super T> observer)
ObservableSource
Observer
to this ObservableSource
instance.subscribe
in interface ObservableSource<T>
observer
- the Observer
, not null
protected abstract void subscribeActual(@NonNull Observer<? super T> observer)
Observer
s.
There is no need to call any of the plugin hooks on the current Observable
instance or
the Observer
; all hooks and basic safeguards have been
applied by subscribe(Observer)
before this method gets called.
observer
- the incoming Observer
, never null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <E extends Observer<? super T>> E subscribeWith(E observer)
Observer
(subclass) to the current Observable
and returns the given
Observer
instance as is.
Usage example:
Observable<Integer> source = Observable.range(1, 10);
CompositeDisposable composite = new CompositeDisposable();
DisposableObserver<Integer> ds = new DisposableObserver<>() {
// ...
};
composite.add(source.subscribeWith(ds));
subscribeWith
does not operate by default on a particular Scheduler
.E
- the type of the Observer
to use and returnobserver
- the Observer
(subclass) to use and return, not null
observer
NullPointerException
- if observer
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> subscribeOn(@NonNull Scheduler scheduler)
Observer
s to the current Observable
on the specified Scheduler
.
Scheduler
this operator will use.scheduler
- the Scheduler
to perform subscription actions onObservable
instanceNullPointerException
- if scheduler
is null
observeOn(io.reactivex.rxjava3.core.Scheduler)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> switchIfEmpty(@NonNull ObservableSource<? extends T> other)
Observable
that emits the items emitted by the current Observable
or the items of an alternate
ObservableSource
if the current Observable
is empty.
switchIfEmpty
does not operate by default on a particular Scheduler
.other
- the alternate ObservableSource
to subscribe to if the source does not emit any itemsObservable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns an ObservableSource
, and then emitting the items emitted by the most recently emitted
of these ObservableSource
s.
The resulting Observable
completes if both the current Observable
and the last inner ObservableSource
, if any, complete.
If the current Observable
signals an onError
, the inner ObservableSource
is disposed and the error delivered in-sequence.
switchMap
does not operate by default on a particular Scheduler
.R
- the element type of the inner ObservableSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
Observable
instanceNullPointerException
- if mapper
is null
switchMapDelayError(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMap(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int bufferSize)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns an ObservableSource
, and then emitting the items emitted by the most recently emitted
of these ObservableSource
s.
The resulting Observable
completes if both the current Observable
and the last inner ObservableSource
, if any, complete.
If the current Observable
signals an onError
, the inner ObservableSource
is disposed and the error delivered in-sequence.
switchMap
does not operate by default on a particular Scheduler
.R
- the element type of the inner ObservableSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
bufferSize
- the number of elements expected from the current active inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveswitchMapDelayError(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable switchMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Observable
into CompletableSource
s, subscribes to the newer one while
disposing the subscription to the previous CompletableSource
, thus keeping at most one
active CompletableSource
running.
Since a CompletableSource
doesn't produce any items, the resulting reactive type of
this operator is a Completable
that can only indicate successful completion or
a failure in any of the inner CompletableSource
s or the failure of the current
Observable
.
switchMapCompletable
does not operate by default on a particular Scheduler
.Observable
or the active CompletableSource
signals an onError
,
the resulting Completable
is terminated immediately with that Throwable
.
Use the switchMapCompletableDelayError(Function)
to delay such inner failures until
every inner CompletableSource
s and the main Observable
terminates in some fashion.
If they fail concurrently, the operator may combine the Throwable
s into a
CompositeException
and signal it to the downstream instead. If any inactivated (switched out) CompletableSource
signals an onError
late, the Throwable
s will be signaled to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors.
History: 2.1.11 - experimental
mapper
- the function called with each upstream item and should return a
CompletableSource
to be subscribed to and awaited for
(non blockingly) for its terminal eventCompletable
instanceNullPointerException
- if mapper
is null
switchMapCompletableDelayError(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable switchMapCompletableDelayError(@NonNull Function<? super T,? extends CompletableSource> mapper)
CompletableSource
s, subscribes to the newer one while
disposing the subscription to the previous CompletableSource
, thus keeping at most one
active CompletableSource
running and delaying any main or inner errors until all
of them terminate.
Since a CompletableSource
doesn't produce any items, the resulting reactive type of
this operator is a Completable
that can only indicate successful completion or
a failure in any of the inner CompletableSource
s or the failure of the current
Observable
.
switchMapCompletableDelayError
does not operate by default on a particular Scheduler
.Observable
and all the CompletableSource
s, who had the chance
to run to their completion, are delayed until
all of them terminate in some fashion. At this point, if there was only one failure, the respective
Throwable
is emitted to the downstream. It there were more than one failures, the
operator combines all Throwable
s into a CompositeException
and signals that to the downstream.
If any inactivated (switched out) CompletableSource
signals an onError
late, the Throwable
s will be signaled to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors.
History: 2.1.11 - experimental
mapper
- the function called with each upstream item and should return a
CompletableSource
to be subscribed to and awaited for
(non blockingly) for its terminal eventCompletable
instanceNullPointerException
- if mapper
is null
switchMapCompletable(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapMaybe(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Observable
into MaybeSource
s and switches (subscribes) to the newer ones
while disposing the older ones (and ignoring their signals) and emits the latest success value of the current one if
available while failing immediately if the current Observable
or any of the
active inner MaybeSource
s fail.
switchMapMaybe
does not operate by default on a particular Scheduler
.onError
if the current Observable
or any of
the inner MaybeSource
s fail while they are active. When this happens concurrently, their
individual Throwable
errors may get combined and emitted as a single
CompositeException
. Otherwise, a late
(i.e., inactive or switched out) onError
from the current Observable
or from any of
the inner MaybeSource
s will be forwarded to the global error handler via
RxJavaPlugins.onError(Throwable)
as
UndeliverableException
History: 2.1.11 - experimental
R
- the output value typemapper
- the function called with the current upstream event and should
return a MaybeSource
to replace the current active inner source
and get subscribed to.Observable
instanceNullPointerException
- if mapper
is null
switchMapMaybeDelayError(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapMaybeDelayError(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
MaybeSource
s and switches (subscribes) to the newer ones
while disposing the older ones (and ignoring their signals) and emits the latest success value of the current one if
available, delaying errors from the current Observable
or the inner MaybeSource
s until all terminate.
switchMapMaybeDelayError
does not operate by default on a particular Scheduler
.History: 2.1.11 - experimental
R
- the output value typemapper
- the function called with the current upstream event and should
return a MaybeSource
to replace the current active inner source
and get subscribed to.Observable
instanceNullPointerException
- if mapper
is null
switchMapMaybe(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns a SingleSource
, and then emitting the item emitted by the most recently emitted
of these SingleSource
s.
The resulting Observable
completes if both the current Observable
and the last inner SingleSource
, if any, complete.
If the current Observable
signals an onError
, the inner SingleSource
is disposed and the error delivered in-sequence.
switchMapSingle
does not operate by default on a particular Scheduler
.History: 2.0.8 - experimental
R
- the element type of the inner SingleSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns a
SingleSource
Observable
instanceNullPointerException
- if mapper
is null
switchMapSingleDelayError(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapSingleDelayError(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns a SingleSource
, and then emitting the item emitted by the most recently emitted
of these SingleSource
s and delays any error until all SingleSource
s terminate.
The resulting Observable
completes if both the current Observable
and the last inner SingleSource
, if any, complete.
If the current Observable
signals an onError
, the termination of the last inner SingleSource
will emit that error as is
or wrapped into a CompositeException
along with the other possible errors the former inner SingleSource
s signaled.
switchMapSingleDelayError
does not operate by default on a particular Scheduler
.History: 2.0.8 - experimental
R
- the element type of the inner SingleSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns a
SingleSource
Observable
instanceNullPointerException
- if mapper
is null
switchMapSingle(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns an ObservableSource
, and then emitting the items emitted by the most recently emitted
of these ObservableSource
s and delays any error until all ObservableSource
s terminate.
The resulting Observable
completes if both the current Observable
and the last inner ObservableSource
, if any, complete.
If the current Observable
signals an onError
, the termination of the last inner ObservableSource
will emit that error as is
or wrapped into a CompositeException
along with the other possible errors the former inner ObservableSource
s signaled.
switchMapDelayError
does not operate by default on a particular Scheduler
.R
- the element type of the inner ObservableSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
Observable
instanceNullPointerException
- if mapper
is null
switchMap(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> switchMapDelayError(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper, int bufferSize)
Observable
by applying a function that you supply to each item emitted by the current
Observable
that returns an ObservableSource
, and then emitting the items emitted by the most recently emitted
of these ObservableSource
s and delays any error until all ObservableSource
s terminate.
The resulting Observable
completes if both the current Observable
and the last inner ObservableSource
, if any, complete.
If the current Observable
signals an onError
, the termination of the last inner ObservableSource
will emit that error as is
or wrapped into a CompositeException
along with the other possible errors the former inner ObservableSource
s signaled.
switchMapDelayError
does not operate by default on a particular Scheduler
.R
- the element type of the inner ObservableSource
s and the outputmapper
- a function that, when applied to an item emitted by the current Observable
, returns an
ObservableSource
bufferSize
- the number of elements expected from the current active inner ObservableSource
to be bufferedObservable
instanceNullPointerException
- if mapper
is null
IllegalArgumentException
- if bufferSize
is non-positiveswitchMap(Function, int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> take(long count)
Observable
that emits only the first count
items emitted by the current Observable
.
If the source emits fewer than count
items then all of its items are emitted.
This method returns an Observable
that will invoke a subscribing Observer
's
onNext
function a maximum of count
times before invoking
onComplete
.
Taking 0
items from the current Observable
will still subscribe to it, allowing the
subscription-time side-effects to happen there, but will be immediately disposed and the downstream completed
without any item emission.
take
does not operate by default on a particular Scheduler
.count
- the maximum number of items to emitObservable
instanceIllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> take(long time, @NonNull TimeUnit unit)
Observable
that emits those items emitted by the current Observable
before a specified time runs
out.
If time runs out before the Observable
completes normally, the onComplete
event will be
signaled on the default computation
Scheduler
.
take
operates by default on the computation
Scheduler
.time
- the length of the time windowunit
- the time unit of time
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> take(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits those items emitted by the current Observable
before a specified time (on a
specified Scheduler
) runs out.
If time runs out before the Observable
completes normally, the onComplete
event will be
signaled on the provided Scheduler
.
Scheduler
this operator will use.time
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
used for time sourceObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> takeLast(int count)
Observable
that emits at most the last count
items emitted by the current Observable
.
If the source emits fewer than count
items then all of its items are emitted.
takeLast
does not operate by default on a particular Scheduler
.count
- the maximum number of items to emit from the end of the sequence of items emitted by the current
Observable
Observable
instanceIllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="io.reactivex:trampoline") @NonNull public final @NonNull Observable<T> takeLast(long count, long time, @NonNull TimeUnit unit)
Observable
that emits at most a specified number of items from the current Observable
that were
emitted in a specified window of time before the current Observable
completed.
takeLast
does not operate on any particular scheduler but uses the current time
from the trampoline
Scheduler
.count
- the maximum number of items to emittime
- the length of the time windowunit
- the time unit of time
Observable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> takeLast(long count, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits at most a specified number of items from the current Observable
that were
emitted in a specified window of time before the current Observable
completed, where the timing information is
provided by a given Scheduler
.
Scheduler
this operator will use for tracking the current timecount
- the maximum number of items to emittime
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
that provides the timestamps for the observed itemsObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is negative@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> takeLast(long count, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize)
Observable
that emits at most a specified number of items from the current Observable
that were
emitted in a specified window of time before the current Observable
completed, where the timing information is
provided by a given Scheduler
.
Scheduler
this operator will use for tracking the current timecount
- the maximum number of items to emittime
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
that provides the timestamps for the observed itemsdelayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedbufferSize
- the hint about how many elements to expect to be lastObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is negative or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:trampoline") @NonNull public final @NonNull Observable<T> takeLast(long time, @NonNull TimeUnit unit)
Observable
that emits the items from the current Observable
that were emitted in a specified
window of time before the current Observable
completed.
takeLast
does not operate on any particular scheduler but uses the current time
from the trampoline
Scheduler
.time
- the length of the time windowunit
- the time unit of time
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:trampoline") @NonNull public final @NonNull Observable<T> takeLast(long time, @NonNull TimeUnit unit, boolean delayError)
Observable
that emits the items from the current Observable
that were emitted in a specified
window of time before the current Observable
completed.
takeLast
does not operate on any particular scheduler but uses the current time
from the trampoline
Scheduler
.time
- the length of the time windowunit
- the time unit of time
delayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> takeLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits the items from the current Observable
that were emitted in a specified
window of time before the current Observable
completed, where the timing information is provided by a specified
Scheduler
.
Scheduler
this operator will use.time
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
that provides the timestamps for the observed itemsObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> takeLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError)
Observable
that emits the items from the current Observable
that were emitted in a specified
window of time before the current Observable
completed, where the timing information is provided by a specified
Scheduler
.
Scheduler
this operator will use.time
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
that provides the timestamps for the observed itemsdelayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> takeLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize)
Observable
that emits the items from the current Observable
that were emitted in a specified
window of time before the current Observable
completed, where the timing information is provided by a specified
Scheduler
.
Scheduler
this operator will use.time
- the length of the time windowunit
- the time unit of time
scheduler
- the Scheduler
that provides the timestamps for the observed itemsdelayError
- if true
, an exception signaled by the current Observable
is delayed until the regular elements are consumed
by the downstream; if false
, an exception is immediately signaled and all regular elements droppedbufferSize
- the hint about how many elements to expect to be lastObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U> @NonNull Observable<T> takeUntil(@NonNull ObservableSource<U> other)
Observable
that emits the items emitted by the current Observable
until a second ObservableSource
emits an item or completes.
takeUntil
does not operate by default on a particular Scheduler
.U
- the type of items emitted by other
other
- the ObservableSource
whose first emitted item or completion will cause takeUntil
to stop emitting items
from the current Observable
Observable
instanceNullPointerException
- if other
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> takeUntil(@NonNull Predicate<? super T> stopPredicate)
Observable
that emits items emitted by the current Observable
, checks the specified predicate
for each item, and then completes when the condition is satisfied.
The difference between this operator and takeWhile(Predicate)
is that here, the condition is
evaluated after the item is emitted.
takeUntil
does not operate by default on a particular Scheduler
.stopPredicate
- a function that evaluates an item emitted by the current Observable
and returns a Boolean
Observable
instanceNullPointerException
- if stopPredicate
is null
takeWhile(Predicate)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> takeWhile(@NonNull Predicate<? super T> predicate)
Observable
that emits items emitted by the current Observable
so long as each item satisfied a
specified condition, and then completes as soon as this condition is not satisfied.
takeWhile
does not operate by default on a particular Scheduler
.predicate
- a function that evaluates an item emitted by the current Observable
and returns a Boolean
Observable
instanceNullPointerException
- if predicate
is null
takeUntil(Predicate)
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> throttleFirst(long windowDuration, @NonNull TimeUnit unit)
Observable
that emits only the first item emitted by the current Observable
during sequential
time windows of a specified duration.
This differs from throttleLast(long, java.util.concurrent.TimeUnit)
in that this only tracks passage of time whereas
throttleLast
ticks at scheduled intervals.
throttleFirst
operates by default on the computation
Scheduler
.windowDuration
- time to wait before emitting another item after emitting the last itemunit
- the unit of time of windowDuration
Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleFirst(long skipDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits only the first item emitted by the current Observable
during sequential
time windows of a specified duration, where the windows are managed by a specified Scheduler
.
This differs from throttleLast(long, java.util.concurrent.TimeUnit)
in that this only tracks passage of time whereas
throttleLast
ticks at scheduled intervals.
Scheduler
this operator will use.skipDuration
- time to wait before emitting another item after emitting the last itemunit
- the unit of time of skipDuration
scheduler
- the Scheduler
to use internally to manage the timers that handle timeout for each
eventObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleFirst(long skipDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super T> onDropped)
Observable
that emits only the first item emitted by the current Observable
during sequential
time windows of a specified duration, where the windows are managed by a specified Scheduler
.
This differs from throttleLast(long, java.util.concurrent.TimeUnit)
in that this only tracks passage of time whereas
throttleLast
ticks at scheduled intervals.
Scheduler
this operator will use.skipDuration
- time to wait before emitting another item after emitting the last itemunit
- the unit of time of skipDuration
scheduler
- the Scheduler
to use internally to manage the timers that handle timeout for each
eventonDropped
- called when an item doesn't get delivered to the downstreamObservable
instanceNullPointerException
- if unit
or scheduler
or onDropped
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> throttleLast(long intervalDuration, @NonNull TimeUnit unit)
Observable
that emits only the last item emitted by the current Observable
during sequential
time windows of a specified duration.
This differs from throttleFirst(long, java.util.concurrent.TimeUnit)
in that this ticks along at a scheduled interval whereas
throttleFirst
does not tick, it just tracks passage of time.
throttleLast
operates by default on the computation
Scheduler
.intervalDuration
- duration of windows within which the last item emitted by the current Observable
will be
emittedunit
- the unit of time of intervalDuration
Observable
instanceNullPointerException
- if unit
is null
sample(long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleLast(long intervalDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super T> onDropped)
Observable
that emits only the last item emitted by the current Observable
during sequential
time windows of a specified duration, where the duration is governed by a specified Scheduler
.
This differs from throttleFirst(long, java.util.concurrent.TimeUnit)
in that this ticks along at a scheduled interval whereas
throttleFirst
does not tick, it just tracks passage of time.
Scheduler
this operator will use.intervalDuration
- duration of windows within which the last item emitted by the current Observable
will be
emittedunit
- the unit of time of intervalDuration
scheduler
- the Scheduler
to use internally to manage the timers that handle timeout for each
eventonDropped
- called with the current entry when it has been replaced by a new oneObservable
instanceNullPointerException
- if unit
or scheduler
is null
or onDropped
is null
sample(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleLast(long intervalDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits only the last item emitted by the current Observable
during sequential
time windows of a specified duration, where the duration is governed by a specified Scheduler
.
This differs from throttleFirst(long, java.util.concurrent.TimeUnit)
in that this ticks along at a scheduled interval whereas
throttleFirst
does not tick, it just tracks passage of time.
Scheduler
this operator will use.intervalDuration
- duration of windows within which the last item emitted by the current Observable
will be
emittedunit
- the unit of time of intervalDuration
scheduler
- the Scheduler
to use internally to manage the timers that handle timeout for each
eventObservable
instanceNullPointerException
- if unit
or scheduler
is null
sample(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> throttleLatest(long timeout, @NonNull TimeUnit unit)
Observable
by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them.
Unlike the option with throttleLatest(long, TimeUnit, boolean)
, the very last item being held back
(if any) is not emitted when the upstream completes.
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
throttleLatest
operates by default on the computation
Scheduler
.History: 2.1.14 - experimental
timeout
- the time to wait after an item emission towards the downstream
before trying to emit the latest item from upstream againunit
- the time unitObservable
instanceNullPointerException
- if unit
is null
throttleLatest(long, TimeUnit, boolean)
,
throttleLatest(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> throttleLatest(long timeout, @NonNull TimeUnit unit, boolean emitLast)
Observable
by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them.
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
throttleLatest
operates by default on the computation
Scheduler
.History: 2.1.14 - experimental
timeout
- the time to wait after an item emission towards the downstream
before trying to emit the latest item from upstream againunit
- the time unitemitLast
- If true
, the very last item from the upstream will be emitted
immediately when the upstream completes, regardless if there is
a timeout window active or not. If false
, the very last
upstream item is ignored and the flow terminates.Observable
instanceNullPointerException
- if unit
is null
throttleLatest(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them.
Unlike the option with throttleLatest(long, TimeUnit, Scheduler, boolean)
, the very last item being held back
(if any) is not emitted when the upstream completes.
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
Scheduler
this operator will use.History: 2.1.14 - experimental
timeout
- the time to wait after an item emission towards the downstream
before trying to emit the latest item from upstream againunit
- the time unitscheduler
- the Scheduler
where the timed wait and latest item
emission will be performedObservable
instanceNullPointerException
- if unit
or scheduler
is null
throttleLatest(long, TimeUnit, Scheduler, boolean)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast)
Observable
by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them.
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
Scheduler
this operator will use.History: 2.1.14 - experimental
timeout
- the time to wait after an item emission towards the downstream
before trying to emit the latest item from upstream againunit
- the time unitscheduler
- the Scheduler
where the timed wait and latest item
emission will be performedemitLast
- If true
, the very last item from the upstream will be emitted
immediately when the upstream completes, regardless if there is
a timeout window active or not. If false
, the very last
upstream item is ignored and the flow terminates.Observable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast, @NonNull Consumer<? super T> onDropped)
Observable
by first emitting the next
item from upstream, then periodically emitting the latest item (if any) when
the specified timeout elapses between them, invoking the consumer for any dropped item.
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
Scheduler
this operator will use.onError
or onDropped
callback crashes,
the error is delivered immediately to the downstream. If both happen, a CompositeException
is created, containing both the upstream and the callback error.
If the onDropped
callback crashes when the sequence gets disposed, the exception is forwarded
to the global error handler via RxJavaPlugins.onError(Throwable)
.
timeout
- the time to wait after an item emission towards the downstream
before trying to emit the latest item from upstream againunit
- the time unitscheduler
- the Scheduler
where the timed wait and latest item
emission will be performedemitLast
- If true
, the very last item from the upstream will be emitted
immediately when the upstream completes, regardless if there is
a timeout window active or not. If false
, the very last
upstream item is ignored and the flow terminates.onDropped
- called when an item is replaced by a newer item that doesn't get delivered
to the downstream, including the very last item if emitLast
is false
and the current undelivered item when the sequence gets disposed.Observable
instanceNullPointerException
- if unit
, scheduler
or onDropped
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> throttleWithTimeout(long timeout, @NonNull TimeUnit unit)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires. The timer resets on
each emission (alias to debounce(long, TimeUnit, Scheduler)
).
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
throttleWithTimeout
operates by default on the computation
Scheduler
.timeout
- the length of the window of time that must pass after the emission of an item from the current
Observable
, in which the current Observable
emits no items, in order for the item to be emitted by the
resulting Observable
unit
- the unit of time for the specified timeout
Observable
instanceNullPointerException
- if unit
is null
debounce(long, TimeUnit)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleWithTimeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires on a specified
Scheduler
. The timer resets on each emission (Alias to debounce(long, TimeUnit, Scheduler)
).
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
Scheduler
this operator will use.timeout
- the length of the window of time that must pass after the emission of an item from the current
Observable
, in which the current Observable
emits no items, in order for the item to be emitted by the
resulting Observable
unit
- the unit of time for the specified timeout
scheduler
- the Scheduler
to use internally to manage the timers that handle the timeout for each
itemObservable
instanceNullPointerException
- if unit
or scheduler
is null
debounce(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> throttleWithTimeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super T> onDropped)
Observable
that mirrors the current Observable
, except that it drops items emitted by the
current Observable
that are followed by newer items before a timeout value expires on a specified
Scheduler
. The timer resets on each emission (Alias to debounce(long, TimeUnit, Scheduler)
).
Note: If items keep being emitted by the current Observable
faster than the timeout then no items
will be emitted by the resulting Observable
.
Scheduler
this operator will use.timeout
- the length of the window of time that must pass after the emission of an item from the current
Observable
, in which the current Observable
emits no items, in order for the item to be emitted by the
resulting Observable
unit
- the unit of time for the specified timeout
scheduler
- the Scheduler
to use internally to manage the timers that handle the timeout for each
itemonDropped
- called with the current entry when it has been replaced by a new oneObservable
instanceNullPointerException
- if unit
or scheduler
is null
or onDropped
is null
debounce(long, TimeUnit, Scheduler, Consumer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timeInterval()
Observable
that emits records of the time interval between consecutive items emitted by the
current Observable
.
timeInterval
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timeInterval(@NonNull Scheduler scheduler)
Observable
that emits records of the time interval between consecutive items emitted by the
current Observable
, where this interval is computed on a specified Scheduler
.
Scheduler
.scheduler
- the Scheduler
used to compute time intervalsObservable
instanceNullPointerException
- if scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timeInterval(@NonNull TimeUnit unit)
Observable
that emits records of the time interval between consecutive items emitted by the
current Observable
.
timeInterval
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.unit
- the time unit for the current timeObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timeInterval(@NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits records of the time interval between consecutive items emitted by the
current Observable
, where this interval is computed on a specified Scheduler
.
Scheduler
.unit
- the time unit for the current timescheduler
- the Scheduler
used to compute time intervalsObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <V> @NonNull Observable<T> timeout(@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator)
Observable
that mirrors the current Observable
, but notifies observers of a
TimeoutException
if an item emitted by the current Observable
doesn't arrive within a window of
time after the emission of the previous item, where that period of time is measured by an ObservableSource
that
is a function of the previous item.
Note: The arrival of the first source item is never timed out.
timeout
operates by default on the immediate
Scheduler
.V
- the timeout value type (ignored)itemTimeoutIndicator
- a function that returns an ObservableSource
for each item emitted by the current
Observable
and that determines the timeout window for the subsequent itemObservable
instanceNullPointerException
- if itemTimeoutIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <V> @NonNull Observable<T> timeout(@NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator, @NonNull ObservableSource<? extends T> fallback)
Observable
that mirrors the current Observable
, but that switches to a fallback ObservableSource
if
an item emitted by the current Observable
doesn't arrive within a window of time after the emission of the
previous item, where that period of time is measured by an ObservableSource
that is a function of the previous
item.
Note: The arrival of the first source item is never timed out.
timeout
operates by default on the immediate
Scheduler
.V
- the timeout value type (ignored)itemTimeoutIndicator
- a function that returns an ObservableSource
, for each item emitted by the current Observable
, that
determines the timeout window for the subsequent itemfallback
- the fallback ObservableSource
to switch to if the current Observable
times outObservable
instanceNullPointerException
- if itemTimeoutIndicator
or fallback
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> timeout(long timeout, @NonNull TimeUnit unit)
Observable
that mirrors the current Observable
but applies a timeout policy for each emitted
item. If the next item isn't emitted within the specified timeout duration starting from its predecessor,
the resulting Observable
terminates and notifies observers of a TimeoutException
.
timeout
operates by default on the computation
Scheduler
.timeout
- maximum duration between emitted items before a timeout occursunit
- the unit of time that applies to the timeout
argument.Observable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<T> timeout(long timeout, @NonNull TimeUnit unit, @NonNull ObservableSource<? extends T> fallback)
Observable
that mirrors the current Observable
but applies a timeout policy for each emitted
item. If the next item isn't emitted within the specified timeout duration starting from its predecessor,
the current Observable
is disposed and the resulting Observable
begins instead
to mirror a fallback ObservableSource
.
timeout
operates by default on the computation
Scheduler
.timeout
- maximum duration between items before a timeout occursunit
- the unit of time that applies to the timeout
argumentfallback
- the fallback ObservableSource
to use in case of a timeoutObservable
instanceNullPointerException
- if unit
or fallback
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> timeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull ObservableSource<? extends T> fallback)
Observable
that mirrors the current Observable
but applies a timeout policy for each emitted
item using a specified Scheduler
. If the next item isn't emitted within the specified timeout duration
starting from its predecessor, the current Observable
is disposed and returned Observable
begins instead to mirror a fallback ObservableSource
.
Scheduler
this operator will use.timeout
- maximum duration between items before a timeout occursunit
- the unit of time that applies to the timeout
argumentscheduler
- the Scheduler
to run the timeout timers onfallback
- the ObservableSource
to use as the fallback in case of a timeoutObservable
instanceNullPointerException
- if unit
, scheduler
or fallback
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> timeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that mirrors the current Observable
but applies a timeout policy for each emitted
item, where this policy is governed on a specified Scheduler
. If the next item isn't emitted within the
specified timeout duration starting from its predecessor, the resulting Observable
terminates and
notifies observers of a TimeoutException
.
Scheduler
this operator will use.timeout
- maximum duration between items before a timeout occursunit
- the unit of time that applies to the timeout
argumentscheduler
- the Scheduler
to run the timeout timers onObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<T> timeout(@NonNull ObservableSource<U> firstTimeoutIndicator, @NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator)
Observable
that mirrors the current Observable
, but notifies observers of a
TimeoutException
if either the first item emitted by the current Observable
or any subsequent item
doesn't arrive within time windows defined by indicator ObservableSource
s.
timeout
operates by default on the immediate
Scheduler
.U
- the first timeout value type (ignored)V
- the subsequent timeout value type (ignored)firstTimeoutIndicator
- a function that returns an ObservableSource
that determines the timeout window for the first source
itemitemTimeoutIndicator
- a function that returns an ObservableSource
for each item emitted by the current Observable
and that
determines the timeout window in which the subsequent source item must arrive in order to
continue the sequenceObservable
instanceNullPointerException
- if firstTimeoutIndicator
or itemTimeoutIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<T> timeout(@NonNull ObservableSource<U> firstTimeoutIndicator, @NonNull Function<? super T,? extends ObservableSource<V>> itemTimeoutIndicator, @NonNull ObservableSource<? extends T> fallback)
Observable
that mirrors the current Observable
, but switches to a fallback ObservableSource
if either
the first item emitted by the current Observable
or any subsequent item doesn't arrive within time windows
defined by indicator ObservableSource
s.
timeout
operates by default on the immediate
Scheduler
.U
- the first timeout value type (ignored)V
- the subsequent timeout value type (ignored)firstTimeoutIndicator
- a function that returns an ObservableSource
which determines the timeout window for the first source
itemitemTimeoutIndicator
- a function that returns an ObservableSource
for each item emitted by the current Observable
and that
determines the timeout window in which the subsequent source item must arrive in order to
continue the sequencefallback
- the fallback ObservableSource
to switch to if the current Observable
times outObservable
instanceNullPointerException
- if firstTimeoutIndicator
, itemTimeoutIndicator
or fallback
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timestamp()
Observable
that emits each item emitted by the current Observable
, wrapped in a
Timed
object.
timestamp
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.Observable
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timestamp(@NonNull Scheduler scheduler)
Observable
that emits each item emitted by the current Observable
, wrapped in a
Timed
object whose timestamps are provided by a specified Scheduler
.
Scheduler
.scheduler
- the Scheduler
to use as a time sourceObservable
instanceNullPointerException
- if scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timestamp(@NonNull TimeUnit unit)
Observable
that emits each item emitted by the current Observable
, wrapped in a
Timed
object.
timestamp
does not operate on any particular scheduler but uses the current time
from the computation
Scheduler
.unit
- the time unit for the current timeObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Timed<T>> timestamp(@NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits each item emitted by the current Observable
, wrapped in a
Timed
object whose timestamps are provided by a specified Scheduler
.
Scheduler
.unit
- the time unit for the current timescheduler
- the Scheduler
to use as a time sourceObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> R to(@NonNull ObservableConverter<T,? extends R> converter)
This allows fluent conversion to any other type.
to
does not operate by default on a particular Scheduler
.History: 2.1.7 - experimental
R
- the resulting object typeconverter
- the function that receives the current Observable
instance and returns a valueNullPointerException
- if converter
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toList()
Single
that emits a single item, a List
composed of all the items emitted by the
current and finite Observable
.
Normally, an ObservableSource
that returns multiple items will do so by invoking its Observer
's
onNext
method for each such item. You can change this behavior by having the
operator to compose a list of all of these items and then to invoke the SingleObserver
's onSuccess
method once, passing it the entire list, by calling the Observable
's toList
method prior to
calling its subscribe()
method.
Note that this operator requires the upstream to signal onComplete
for the accumulated list to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toList
does not operate by default on a particular Scheduler
.Single
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toList(int capacityHint)
Single
that emits a single item, a List
composed of all the items emitted by the
current and finite Observable
.
Normally, an ObservableSource
that returns multiple items will do so by invoking its Observer
's
onNext
method for each such item. You can change this behavior by having the
operator to compose a list of all of these items and then to invoke the SingleObserver
's onSuccess
method once, passing it the entire list, by calling the Observable
's toList
method prior to
calling its subscribe()
method.
Note that this operator requires the upstream to signal onComplete
for the accumulated list to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toList
does not operate by default on a particular Scheduler
.capacityHint
- the number of elements expected from the current Observable
Single
instanceIllegalArgumentException
- if capacityHint
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U extends Collection<? super T>> @NonNull Single<U> toList(@NonNull Supplier<U> collectionSupplier)
Single
that emits a single item, a Collection
(subclass) composed of all the items emitted by the
finite upstream Observable
.
Normally, an ObservableSource
that returns multiple items will do so by invoking its Observer
's
onNext
method for each such item. You can change this behavior by having the
operator to compose a collection of all of these items and then to invoke the SingleObserver
's onSuccess
method once, passing it the entire collection, by calling the Observable
's toList
method prior to
calling its subscribe()
method.
Note that this operator requires the upstream to signal onComplete
for the accumulated collection to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toList
does not operate by default on a particular Scheduler
.U
- the subclass of a collection of TscollectionSupplier
- the Supplier
returning the collection (for each individual Observer
) to be filled inSingle
instanceNullPointerException
- if collectionSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Single<Map<K,T>> toMap(@NonNull Function<? super T,? extends K> keySelector)
Single
that emits a single HashMap
containing all items emitted by the
current and finite Observable
, mapped by the keys returned by a specified
keySelector
function.
If more than one source item maps to the same key, the HashMap
will contain the latest of those items.
Note that this operator requires the upstream to signal onComplete
for the accumulated HashMap
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMap
does not operate by default on a particular Scheduler
.K
- the key type of the MapkeySelector
- the function that extracts the key from a source item to be used in the HashMap
Single
instanceNullPointerException
- if keySelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Single<Map<K,V>> toMap(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector)
Single
that emits a single HashMap
containing values corresponding to items emitted by the
current and finite Observable
, mapped by the keys and values returned by the given selector functions.
If more than one source item maps to the same key, the HashMap
will contain a single entry that
corresponds to the latest of those items.
Note that this operator requires the upstream to signal onComplete
for the accumulated HashMap
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMap
does not operate by default on a particular Scheduler
.K
- the key type of the HashMap
V
- the value type of the HashMap
keySelector
- the function that extracts the key from a source item to be used in the HashMap
valueSelector
- the function that extracts the value from a source item to be used in the HashMap
Single
instanceNullPointerException
- if keySelector
or valueSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Single<Map<K,V>> toMap(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector, @NonNull Supplier<? extends Map<K,V>> mapSupplier)
Single
that emits a single Map
(subclass), returned by a specified mapFactory
function, that
contains keys and values extracted from the items, via selector functions, emitted by the current and finite Observable
.
Note that this operator requires the upstream to signal onComplete
for the accumulated Map
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMap
does not operate by default on a particular Scheduler
.K
- the key type of the Map
V
- the value type of the Map
keySelector
- the function that extracts the key from a source item to be used in the Map
valueSelector
- the function that extracts the value from the source items to be used as value in the Map
mapSupplier
- the function that returns a Map
instance to be usedSingle
instanceNullPointerException
- if keySelector
, valueSelector
or mapSupplier
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K> @NonNull Single<Map<K,Collection<T>>> toMultimap(@NonNull Function<? super T,? extends K> keySelector)
Single
that emits a single HashMap
that contains an ArrayList
of items emitted by the
current and finite Observable
keyed by a specified keySelector
function.
Note that this operator requires the upstream to signal onComplete
for the accumulated HashMap
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMultimap
does not operate by default on a particular Scheduler
.K
- the key type of the HashMap
keySelector
- the function that extracts the key from the source items to be used as key in the HashMap
Single
instanceNullPointerException
- if keySelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Single<Map<K,Collection<V>>> toMultimap(@NonNull Function<? super T,? extends K> keySelector, Function<? super T,? extends V> valueSelector)
Single
that emits a single HashMap
that contains an ArrayList
of values extracted by a
specified valueSelector
function from items emitted by the current and finite Observable
,
keyed by a specified keySelector
function.
Note that this operator requires the upstream to signal onComplete
for the accumulated HashMap
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMultimap
does not operate by default on a particular Scheduler
.K
- the key type of the HashMap
V
- the value type of the HashMap
keySelector
- the function that extracts a key from the source items to be used as key in the HashMap
valueSelector
- the function that extracts a value from the source items to be used as value in the HashMap
Single
instanceNullPointerException
- if keySelector
or valueSelector
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Single<Map<K,Collection<V>>> toMultimap(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector, @NonNull Supplier<? extends Map<K,Collection<V>>> mapSupplier, @NonNull Function<? super K,? extends Collection<? super V>> collectionFactory)
Single
that emits a single Map
(subclass), returned by a specified mapFactory
function, that
contains a custom Collection
of values, extracted by a specified valueSelector
function from
items emitted by the current and finite Observable
, and keyed by the keySelector
function.
Note that this operator requires the upstream to signal onComplete
for the accumulated Map
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMultimap
does not operate by default on a particular Scheduler
.K
- the key type of the Map
V
- the value type of the Map
keySelector
- the function that extracts a key from the source items to be used as the key in the Map
valueSelector
- the function that extracts a value from the source items to be used as the value in the Map
mapSupplier
- the function that returns a Map
instance to be usedcollectionFactory
- the function that returns a Collection
instance for a particular key to be used in the Map
Single
instanceNullPointerException
- if keySelector
, valueSelector
, mapSupplier
or collectionFactory
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <K,V> @NonNull Single<Map<K,Collection<V>>> toMultimap(@NonNull Function<? super T,? extends K> keySelector, @NonNull Function<? super T,? extends V> valueSelector, @NonNull Supplier<Map<K,Collection<V>>> mapSupplier)
Single
that emits a single Map
(subclass), returned by a specified mapFactory
function, that
contains an ArrayList
of values, extracted by a specified valueSelector
function from items
emitted by the current and finite Observable
and keyed by the keySelector
function.
Note that this operator requires the upstream to signal onComplete
for the accumulated Map
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toMultimap
does not operate by default on a particular Scheduler
.K
- the key type of the Map
V
- the value type of the Map
keySelector
- the function that extracts a key from the source items to be used as the key in the Map
valueSelector
- the function that extracts a value from the source items to be used as the value in the Map
mapSupplier
- the function that returns a Map
instance to be usedSingle
instanceNullPointerException
- if keySelector
, valueSelector
or mapSupplier
is null
@BackpressureSupport(value=SPECIAL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> toFlowable(@NonNull BackpressureStrategy strategy)
Observable
into a Flowable
by applying the specified backpressure strategy.
Marble diagrams for the various backpressure strategies are as follows:
BackpressureStrategy.BUFFER
BackpressureStrategy.DROP
BackpressureStrategy.LATEST
BackpressureStrategy.ERROR
BackpressureStrategy.MISSING
BackpressureStrategy
enum.toFlowable
does not operate by default on a particular Scheduler
.strategy
- the backpressure strategy to applyFlowable
instanceNullPointerException
- if strategy
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toSortedList()
Single
that emits a List
that contains the items emitted by the current and finite Observable
, in a
sorted order. Each item emitted by the current Observable
must implement Comparable
with respect to all
other items in the sequence.
If any item emitted by the current Observable
does not implement Comparable
with respect to
all other items emitted by the current Observable
, no items will be emitted and the
sequence is terminated with a ClassCastException
.
Note that this operator requires the upstream to signal onComplete
for the accumulated List
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toSortedList
does not operate by default on a particular Scheduler
.Single
instancetoSortedList(int)
,
toSortedList(Comparator)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toSortedList(@NonNull Comparator<? super T> comparator)
Single
that emits a List
that contains the items emitted by the current and finite Observable
, in a
sorted order based on a specified comparison function.
Note that this operator requires the upstream to signal onComplete
for the accumulated List
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toSortedList
does not operate by default on a particular Scheduler
.comparator
- a function that compares two items emitted by the current Observable
and returns an int
that indicates their sort orderSingle
instanceNullPointerException
- if comparator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toSortedList(@NonNull Comparator<? super T> comparator, int capacityHint)
Single
that emits a List
that contains the items emitted by the current and finite Observable
, in a
sorted order based on a specified comparison function.
Note that this operator requires the upstream to signal onComplete
for the accumulated List
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toSortedList
does not operate by default on a particular Scheduler
.comparator
- a function that compares two items emitted by the current Observable
and returns an int
that indicates their sort ordercapacityHint
- the initial capacity of the List
used to accumulate items before sortingSingle
instanceNullPointerException
- if comparator
is null
IllegalArgumentException
- if capacityHint
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<List<T>> toSortedList(int capacityHint)
Single
that emits a List
that contains the items emitted by the current and finite Observable
, in a
sorted order. Each item emitted by the current Observable
must implement Comparable
with respect to all
other items in the sequence.
If any item emitted by the current Observable
does not implement Comparable
with respect to
all other items emitted by the current Observable
, no items will be emitted and the
sequence is terminated with a ClassCastException
.
Note that this operator requires the upstream to signal onComplete
for the accumulated List
to
be emitted. Sources that are infinite and never complete will never emit anything through this
operator and an infinite source may lead to a fatal OutOfMemoryError
.
toSortedList
does not operate by default on a particular Scheduler
.capacityHint
- the initial capacity of the List
used to accumulate items before sortingSingle
instanceIllegalArgumentException
- if capacityHint
is non-positivetoSortedList(Comparator, int)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<T> unsubscribeOn(@NonNull Scheduler scheduler)
Observable
that schedules the downstream Observer
s' dispose
calls
aimed at the current Observable
on the given Scheduler
.
Scheduler
this operator will use.scheduler
- the Scheduler
to perform the call to dispose()
of the upstream Disposable
Observable
instanceNullPointerException
- if scheduler
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Observable<T>> window(long count)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each containing count
items. When the current
Observable
completes or encounters an error, the resulting Observable
emits the current window and
propagates the notification from the current Observable
.
window
does not operate by default on a particular Scheduler
.count
- the maximum size of each window before it should be emittedObservable
instanceIllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Observable<T>> window(long count, long skip)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits windows every skip
items, each containing no more than count
items. When
the current Observable
completes or encounters an error, the resulting Observable
emits the current window
and propagates the notification from the current Observable
.
window
does not operate by default on a particular Scheduler
.count
- the maximum size of each window before it should be emittedskip
- how many items need to be skipped before starting a new window. Note that if skip
and
count
are equal this is the same operation as window(long)
.Observable
instanceIllegalArgumentException
- if count
or skip
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<Observable<T>> window(long count, long skip, int bufferSize)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits windows every skip
items, each containing no more than count
items. When
the current Observable
completes or encounters an error, the resulting Observable
emits the current window
and propagates the notification from the current Observable
.
window
does not operate by default on a particular Scheduler
.count
- the maximum size of each window before it should be emittedskip
- how many items need to be skipped before starting a new window. Note that if skip
and
count
are equal this is the same operation as window(long)
.bufferSize
- the capacity hint for the buffer in the inner windowsObservable
instanceIllegalArgumentException
- if count
, skip
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, long timeskip, @NonNull TimeUnit unit)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
starts a new window periodically, as determined by the timeskip
argument. It emits
each window after a fixed timespan, specified by the timespan
argument. When the current
Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
operates by default on the computation
Scheduler
.timespan
- the period of time each window collects items before it should be emittedtimeskip
- the period of time after which a new window will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if timespan
or timeskip
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
starts a new window periodically, as determined by the timeskip
argument. It emits
each window after a fixed timespan, specified by the timespan
argument. When the current
Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emittedtimeskip
- the period of time after which a new window will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsscheduler
- the Scheduler
to use when determining the end and start of a windowObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if timespan
or timeskip
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, int bufferSize)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
starts a new window periodically, as determined by the timeskip
argument. It emits
each window after a fixed timespan, specified by the timespan
argument. When the current
Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emittedtimeskip
- the period of time after which a new window will be createdunit
- the unit of time that applies to the timespan
and timeskip
argumentsscheduler
- the Scheduler
to use when determining the end and start of a windowbufferSize
- the capacity hint for the buffer in the inner windowsObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if timespan
, timeskip
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration specified by the
timespan
argument. When the current Observable
completes or encounters an error, the resulting
Observable
emits the current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
operates by default on the computation
Scheduler
.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time that applies to the timespan
argumentObservable
instanceNullPointerException
- if unit
is null
@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, long count)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration as specified by the
timespan
argument or a maximum size as specified by the count
argument (whichever is
reached first). When the current Observable
completes or encounters an error, the resulting Observable
emits the current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
operates by default on the computation
Scheduler
.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time that applies to the timespan
argumentcount
- the maximum size of each window before it should be emittedObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, long count, boolean restart)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration as specified by the
timespan
argument or a maximum size as specified by the count
argument (whichever is
reached first). When the current Observable
completes or encounters an error, the resulting Observable
emits the current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
operates by default on the computation
Scheduler
.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time that applies to the timespan
argumentcount
- the maximum size of each window before it should be emittedrestart
- if true
, when a window reaches the capacity limit, the timer is restarted as wellObservable
instanceNullPointerException
- if unit
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration as specified by the
timespan
argument. When the current Observable
completes or encounters an error, the resulting
Observable
emits the current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time which applies to the timespan
argumentscheduler
- the Scheduler
to use when determining the end and start of a windowObservable
instanceNullPointerException
- if unit
or scheduler
is null
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, long count)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration specified by the
timespan
argument or a maximum size specified by the count
argument (whichever is reached
first). When the current Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time which applies to the timespan
argumentcount
- the maximum size of each window before it should be emittedscheduler
- the Scheduler
to use when determining the end and start of a windowObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, long count, boolean restart)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration specified by the
timespan
argument or a maximum size specified by the count
argument (whichever is reached
first). When the current Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time which applies to the timespan
argumentcount
- the maximum size of each window before it should be emittedscheduler
- the Scheduler
to use when determining the end and start of a windowrestart
- if true
, when a window reaches the capacity limit, the timer is restarted as wellObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
is non-positive@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Observable<Observable<T>> window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, long count, boolean restart, int bufferSize)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits connected, non-overlapping windows, each of a fixed duration specified by the
timespan
argument or a maximum size specified by the count
argument (whichever is reached
first). When the current Observable
completes or encounters an error, the resulting Observable
emits the
current window and propagates the notification from the current Observable
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
Scheduler
this operator will use.timespan
- the period of time each window collects items before it should be emitted and replaced with a
new windowunit
- the unit of time which applies to the timespan
argumentcount
- the maximum size of each window before it should be emittedscheduler
- the Scheduler
to use when determining the end and start of a windowrestart
- if true
, when a window reaches the capacity limit, the timer is restarted as wellbufferSize
- the capacity hint for the buffer in the inner windowsObservable
instanceNullPointerException
- if unit
or scheduler
is null
IllegalArgumentException
- if count
or bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <B> @NonNull Observable<Observable<T>> window(@NonNull ObservableSource<B> boundaryIndicator)
Observable
that emits non-overlapping windows of items it collects from the current Observable
where the boundary of each window is determined by the items emitted from a specified boundary-governing
ObservableSource
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
does not operate by default on a particular Scheduler
.B
- the window element type (ignored)boundaryIndicator
- an ObservableSource
whose emitted items close and open windowsObservable
instanceNullPointerException
- if boundaryIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <B> @NonNull Observable<Observable<T>> window(@NonNull ObservableSource<B> boundaryIndicator, int bufferSize)
Observable
that emits non-overlapping windows of items it collects from the current Observable
where the boundary of each window is determined by the items emitted from a specified boundary-governing
ObservableSource
.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
does not operate by default on a particular Scheduler
.B
- the window element type (ignored)boundaryIndicator
- an ObservableSource
whose emitted items close and open windowsbufferSize
- the capacity hint for the buffer in the inner windowsObservable
instanceNullPointerException
- if boundaryIndicator
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<Observable<T>> window(@NonNull ObservableSource<U> openingIndicator, @NonNull Function<? super U,? extends ObservableSource<V>> closingIndicator)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits windows that contain those items emitted by the current Observable
between the time when
the openingIndicator
ObservableSource
emits an item and when the ObservableSource
returned by
closingIndicator
emits an item.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
does not operate by default on a particular Scheduler
.U
- the element type of the window-opening ObservableSource
V
- the element type of the window-closing ObservableSource
sopeningIndicator
- an ObservableSource
that, when it emits an item, causes another window to be createdclosingIndicator
- a Function
that produces an ObservableSource
for every window created. When this indicator ObservableSource
emits an item, the associated window is completedObservable
instanceNullPointerException
- if openingIndicator
or closingIndicator
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,V> @NonNull Observable<Observable<T>> window(@NonNull ObservableSource<U> openingIndicator, @NonNull Function<? super U,? extends ObservableSource<V>> closingIndicator, int bufferSize)
Observable
that emits windows of items it collects from the current Observable
. The resulting
Observable
emits windows that contain those items emitted by the current Observable
between the time when
the openingIndicator
ObservableSource
emits an item and when the ObservableSource
returned by
closingIndicator
emits an item.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window may not contain any elements. In this case, subsequent elements will be dropped until the condition for the next window boundary is satisfied. The behavior is a trade-off for ensuring upstream cancellation can happen under some race conditions.
window
does not operate by default on a particular Scheduler
.U
- the element type of the window-opening ObservableSource
V
- the element type of the window-closing ObservableSource
sopeningIndicator
- an ObservableSource
that, when it emits an item, causes another window to be createdclosingIndicator
- a Function
that produces an ObservableSource
for every window created. When this indicator ObservableSource
emits an item, the associated window is completedbufferSize
- the capacity hint for the buffer in the inner windowsObservable
instanceNullPointerException
- if openingIndicator
or closingIndicator
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> withLatestFrom(@NonNull ObservableSource<? extends U> other, @NonNull BiFunction<? super T,? super U,? extends R> combiner)
ObservableSource
into the current Observable
sequence by using the resultSelector
function only when the current Observable
emits an item.
Note that this operator doesn't emit anything until the other source has produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when the other source emits, unlike combineLatest).
If the other source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before the other source has produced at least one value, the sequence completes
without emission.
Scheduler
.U
- the element type of the other ObservableSource
R
- the result type of the combinationother
- the other ObservableSource
combiner
- the function to call when the current Observable
emits an item and the other ObservableSource
has already
emitted an item, to generate the item to be emitted by the resulting Observable
Observable
instanceNullPointerException
- if other
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <T1,T2,R> @NonNull Observable<R> withLatestFrom(@NonNull ObservableSource<T1> source1, @NonNull ObservableSource<T2> source2, @NonNull Function3<? super T,? super T1,? super T2,R> combiner)
Observable
with the latest emissions from the
other ObservableSource
s via a function to produce the output item.
Note that this operator doesn't emit anything until all other sources have produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when any of the other sources emit, unlike combineLatest
).
If a source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before all other sources have produced at least one value, the sequence completes
without emission.
Scheduler
.T1
- the first other source's value typeT2
- the second other source's value typeR
- the result value typesource1
- the first other ObservableSource
source2
- the second other ObservableSource
combiner
- the function called with an array of values from each participating ObservableSource
Observable
instanceNullPointerException
- if source1
, source2
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <T1,T2,T3,R> @NonNull Observable<R> withLatestFrom(@NonNull ObservableSource<T1> source1, @NonNull ObservableSource<T2> source2, @NonNull ObservableSource<T3> source3, @NonNull Function4<? super T,? super T1,? super T2,? super T3,R> combiner)
Observable
with the latest emissions from the
other ObservableSource
s via a function to produce the output item.
Note that this operator doesn't emit anything until all other sources have produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when any of the other sources emit, unlike combineLatest).
If a source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before all other sources have produced at least one value, the sequence completes
without emission.
Scheduler
.T1
- the first other source's value typeT2
- the second other source's value typeT3
- the third other source's value typeR
- the result value typesource1
- the first other ObservableSource
source2
- the second other ObservableSource
source3
- the third other ObservableSource
combiner
- the function called with an array of values from each participating ObservableSource
Observable
instanceNullPointerException
- if source1
, source2
, source3
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <T1,T2,T3,T4,R> @NonNull Observable<R> withLatestFrom(@NonNull ObservableSource<T1> source1, @NonNull ObservableSource<T2> source2, @NonNull ObservableSource<T3> source3, @NonNull ObservableSource<T4> source4, @NonNull Function5<? super T,? super T1,? super T2,? super T3,? super T4,R> combiner)
Observable
with the latest emissions from the
other ObservableSource
s via a function to produce the output item.
Note that this operator doesn't emit anything until all other sources have produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when any of the other sources emit, unlike combineLatest).
If a source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before all other sources have produced at least one value, the sequence completes
without emission.
Scheduler
.T1
- the first other source's value typeT2
- the second other source's value typeT3
- the third other source's value typeT4
- the fourth other source's value typeR
- the result value typesource1
- the first other ObservableSource
source2
- the second other ObservableSource
source3
- the third other ObservableSource
source4
- the fourth other ObservableSource
combiner
- the function called with an array of values from each participating ObservableSource
Observable
instanceNullPointerException
- if source1
, source2
, source3
,
source4
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> withLatestFrom(@NonNull ObservableSource<?>[] others, @NonNull Function<? super Object[],R> combiner)
Observable
with the latest emissions from the
other ObservableSource
s via a function to produce the output item.
Note that this operator doesn't emit anything until all other sources have produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when any of the other sources emit, unlike combineLatest).
If a source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before all other sources have produced at least one value, the sequence completes
without emission.
Scheduler
.R
- the result value typeothers
- the array of other sourcescombiner
- the function called with an array of values from each participating ObservableSource
Observable
instanceNullPointerException
- if others
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> withLatestFrom(@NonNull Iterable<? extends ObservableSource<?>> others, @NonNull Function<? super Object[],R> combiner)
Observable
with the latest emissions from the
other ObservableSource
s via a function to produce the output item.
Note that this operator doesn't emit anything until all other sources have produced at
least one value. The resulting emission only happens when the current Observable
emits (and
not when any of the other sources emit, unlike combineLatest
).
If a source doesn't produce any value and just completes, the sequence is completed immediately.
If the upstream completes before all other sources have produced at least one value, the sequence completes
without emission.
Scheduler
.R
- the result value typeothers
- the iterable of other sourcescombiner
- the function called with an array of values from each participating ObservableSource
Observable
instanceNullPointerException
- if others
or combiner
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> zipWith(@NonNull Iterable<U> other, @NonNull BiFunction<? super T,? super U,? extends R> zipper)
Observable
that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable
and a specified Iterable
sequence.
Note that the other
Iterable
is evaluated as items are observed from the current Observable
; it is
not pre-consumed. This allows you to zip infinite streams on either side.
zipWith
does not operate by default on a particular Scheduler
.U
- the type of items in the other
Iterable
R
- the type of items emitted by the resulting Observable
other
- the Iterable
sequencezipper
- a function that combines the pairs of items from the current Observable
and the Iterable
to generate
the items to be emitted by the resulting Observable
Observable
instanceNullPointerException
- if other
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> zipWith(@NonNull ObservableSource<? extends U> other, @NonNull BiFunction<? super T,? super U,? extends R> zipper)
Observable
that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable
and another specified ObservableSource
.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zipWith
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the other
ObservableSource
R
- the type of items emitted by the resulting Observable
other
- the other ObservableSource
zipper
- a function that combines the pairs of items from the current Observable
and the other ObservableSource
to generate the items to
be emitted by the resulting Observable
Observable
instanceNullPointerException
- if other
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> zipWith(@NonNull ObservableSource<? extends U> other, @NonNull BiFunction<? super T,? super U,? extends R> zipper, boolean delayError)
Observable
that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable
and another specified ObservableSource
.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zipWith
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the other
ObservableSource
R
- the type of items emitted by the resulting Observable
other
- the other ObservableSource
zipper
- a function that combines the pairs of items from the current Observable
and the other ObservableSource
to generate the items to
be emitted by the resulting Observable
delayError
- if true
, errors from the current Observable
or the other ObservableSource
is delayed until both terminateObservable
instanceNullPointerException
- if other
or zipper
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <U,R> @NonNull Observable<R> zipWith(@NonNull ObservableSource<? extends U> other, @NonNull BiFunction<? super T,? super U,? extends R> zipper, boolean delayError, int bufferSize)
Observable
that emits items that are the result of applying a specified function to pairs of
values, one each from the current Observable
and another specified ObservableSource
.
The operator subscribes to its sources in order they are specified and completes eagerly if
one of the sources is shorter than the rest while disposing the other sources. Therefore, it
is possible those other sources will never be able to run to completion (and thus not calling
doOnComplete()
). This can also happen if the sources are exactly the same length; if
source A completes and B has been consumed and is about to complete, the operator detects A won't
be sending further values and it will dispose B immediately. For example:
range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)
action1
will be called but action2
won't.
doOnDispose(Action)
as well or use using()
to do cleanup in case of completion
or a dispose() call.
zipWith
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the other
ObservableSource
R
- the type of items emitted by the resulting Observable
other
- the other ObservableSource
zipper
- a function that combines the pairs of items from the current Observable
and the other ObservableSource
to generate the items to
be emitted by the resulting Observable
bufferSize
- the capacity hint for the buffer in the inner windowsdelayError
- if true
, errors from the current Observable
or the other ObservableSource
is delayed until both terminateObservable
instanceNullPointerException
- if other
or zipper
is null
IllegalArgumentException
- if bufferSize
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull TestObserver<T> test()
TestObserver
and subscribes it to the current Observable
.
test
does not operate by default on a particular Scheduler
.TestObserver
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull TestObserver<T> test(boolean dispose)
TestObserver
, optionally disposes it and then subscribes
it to the current Observable
.
test
does not operate by default on a particular Scheduler
.dispose
- indicates if the TestObserver
should be disposed before
it is subscribed to the current Observable
TestObserver
instance@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> fromOptional(@NonNull Optional<T> optional)
just(Object)
or an empty optional into an empty()
Observable
instance.
Note that the operator takes an already instantiated optional reference and does not
by any means create this original optional. If the optional is to be created per
consumer upon subscription, use defer(Supplier)
around fromOptional
:
Observable.defer(() -> Observable.fromOptional(createOptional()));
fromOptional
does not operate by default on a particular Scheduler
.T
- the element type of the optional valueoptional
- the optional value to convert into an Observable
Observable
instanceNullPointerException
- if optional
is null
just(Object)
,
empty()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> fromCompletionStage(@NonNull CompletionStage<T> stage)
CompletionStage
-based asynchronous calculation.
Note that the operator takes an already instantiated, running or terminated CompletionStage
.
If the CompletionStage
is to be created per consumer upon subscription, use defer(Supplier)
around fromCompletionStage
:
Observable.defer(() -> Observable.fromCompletionStage(createCompletionStage()));
If the CompletionStage
completes with null
, a NullPointerException
is signaled.
Canceling the flow can't cancel the execution of the CompletionStage
because CompletionStage
itself doesn't support cancellation. Instead, the operator detaches from the CompletionStage
.
fromCompletionStage
does not operate by default on a particular Scheduler
.T
- the element type of the CompletionStage
stage
- the CompletionStage
to convert to Observable
and signal its terminal value or errorObservable
instanceNullPointerException
- if stage
is null
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Observable<T> fromStream(@NonNull Stream<T> stream)
Stream
into a finite Observable
and emits its items in the sequence.
The operator closes the Stream
upon cancellation and when it terminates. The exceptions raised when
closing a Stream
are routed to the global error handler (RxJavaPlugins.onError(Throwable)
.
If a Stream
should not be closed, turn it into an Iterable
and use fromIterable(Iterable)
:
Stream<T> stream = ...
Observable.fromIterable(stream::iterator);
Note that Stream
s can be consumed only once; any subsequent attempt to consume a Stream
will result in an IllegalStateException
.
Primitive streams are not supported and items have to be boxed manually (e.g., via IntStream.boxed()
):
IntStream intStream = IntStream.rangeClosed(1, 10);
Observable.fromStream(intStream.boxed());
Stream
does not support concurrent usage so creating and/or consuming the same instance multiple times
from multiple threads can lead to undefined behavior.
fromStream
does not operate by default on a particular Scheduler
.T
- the element type of the source Stream
stream
- the Stream
of values to emitObservable
instanceNullPointerException
- if stream
is null
fromIterable(Iterable)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> mapOptional(@NonNull Function<? super T,Optional<? extends R>> mapper)
Optional
and emits the contained item if not empty.
mapOptional
does not operate by default on a particular Scheduler
.R
- the non-null
output typemapper
- the function that receives the upstream item and should return a non-empty Optional
to emit as the output or an empty Optional
to skip to the next upstream valueObservable
instanceNullPointerException
- if mapper
is null
map(Function)
,
filter(Predicate)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R,A> @NonNull Single<R> collect(@NonNull Collector<? super T,A,R> collector)
Stream
Collector
callback set and emits
it as the success result as a Single
.
collect
does not operate by default on a particular Scheduler
.R
- the non-null
result typeA
- the intermediate container type used for the accumulationcollector
- the interface defining the container supplier, accumulator and finisher functions;
see Collectors
for some standard implementationsSingle
instanceNullPointerException
- if collector
is null
Collectors
,
collect(Supplier, BiConsumer)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> firstStage(@Nullable T defaultItem)
CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
CompletionStage
s don't have a notion of emptiness and allow null
s, therefore, one can either use
a defaultItem
of null
or turn the flow into a sequence of Optional
s and default to Optional.empty()
:
CompletionStage<Optional<T>> stage = source.map(Optional::of).firstStage(Optional.empty());
firstStage
does not operate by default on a particular Scheduler
.defaultItem
- the item to signal if the upstream is emptyCompletionStage
instanceNullPointerException
- if defaultItem
is null
firstOrErrorStage()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> singleStage(@Nullable T defaultItem)
IllegalArgumentException
if the upstream has more than one item
via a CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
CompletionStage
s don't have a notion of emptiness and allow null
s, therefore, one can either use
a defaultItem
of null
or turn the flow into a sequence of Optional
s and default to Optional.empty()
:
CompletionStage<Optional<T>> stage = source.map(Optional::of).singleStage(Optional.empty());
singleStage
does not operate by default on a particular Scheduler
.defaultItem
- the item to signal if the upstream is emptyCompletionStage
instanceNullPointerException
- if defaultItem
is null
singleOrErrorStage()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> lastStage(@Nullable T defaultItem)
CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
CompletionStage
s don't have a notion of emptiness and allow null
s, therefore, one can either use
a defaultItem
of null
or turn the flow into a sequence of Optional
s and default to Optional.empty()
:
CompletionStage<Optional<T>> stage = source.map(Optional::of).lastStage(Optional.empty());
lastStage
does not operate by default on a particular Scheduler
.defaultItem
- the item to signal if the upstream is emptyCompletionStage
instanceNullPointerException
- if defaultItem
is null
lastOrErrorStage()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> firstOrErrorStage()
NoSuchElementException
if the upstream is empty via
a CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
firstOrErrorStage
does not operate by default on a particular Scheduler
.CompletionStage
instancefirstStage(Object)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> singleOrErrorStage()
NoSuchElementException
if the upstream is empty
or signals IllegalArgumentException
if the upstream has more than one item
via a CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
singleOrErrorStage
does not operate by default on a particular Scheduler
.CompletionStage
instancesingleStage(Object)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> lastOrErrorStage()
NoSuchElementException
if the upstream is empty via
a CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
lastOrErrorStage
does not operate by default on a particular Scheduler
.CompletionStage
instancelastStage(Object)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Stream<T> blockingStream()
Stream
to consume or process the current Observable
in a blocking manner via
the Java Stream
API.
Cancellation of the upstream is done via BaseStream.close()
, therefore, it is strongly recommended the
consumption is performed within a try-with-resources construct:
Observable<Integer> source = Observable.range(1, 10)
.subscribeOn(Schedulers.computation());
try (Stream<Integer> stream = source.blockingStream()) {
stream.limit(3).forEach(System.out::println);
}
blockingStream
does not operate by default on a particular Scheduler
.Stream
instanceblockingStream(int)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Stream<T> blockingStream(int capacityHint)
Stream
to consume or process the current Observable
in a blocking manner via
the Java Stream
API.
Cancellation of the upstream is done via BaseStream.close()
, therefore, it is strongly recommended the
consumption is performed within a try-with-resources construct:
Observable<Integer> source = Observable.range(1, 10)
.subscribeOn(Schedulers.computation());
try (Stream<Integer> stream = source.blockingStream(4)) {
stream.limit(3).forEach(System.out::println);
}
blockingStream
does not operate by default on a particular Scheduler
.capacityHint
- the expected number of items to be bufferedStream
instanceIllegalArgumentException
- if capacityHint
is non-positive@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> concatMapStream(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Stream
and emits the Stream
's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java Stream
s, the streams are mapped and consumed in a sequential fashion
without interleaving (unlike a more general flatMap(Function)
). Therefore, flatMapStream
and
concatMapStream
are identical operators and are provided as aliases.
The operator closes the Stream
upon cancellation and when it terminates. The exceptions raised when
closing a Stream
are routed to the global error handler (RxJavaPlugins.onError(Throwable)
.
If a Stream
should not be closed, turn it into an Iterable
and use concatMapIterable(Function)
:
source.concatMapIterable(v -> createStream(v)::iterator);
Note that Stream
s can be consumed only once; any subsequent attempt to consume a Stream
will result in an IllegalStateException
.
Primitive streams are not supported and items have to be boxed manually (e.g., via IntStream.boxed()
):
source.concatMapStream(v -> IntStream.rangeClosed(v + 1, v + 10).boxed());
Stream
does not support concurrent usage so creating and/or consuming the same instance multiple times
from multiple threads can lead to undefined behavior.
concatMapStream
does not operate by default on a particular Scheduler
.R
- the element type of the Stream
s and the resultmapper
- the function that receives an upstream item and should return a Stream
whose elements
will be emitted to the downstreamObservable
instanceNullPointerException
- if mapper
is null
concatMap(Function)
,
concatMapIterable(Function)
,
flatMapStream(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flatMapStream(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Stream
and emits the Stream
's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java Stream
s, the streams are mapped and consumed in a sequential fashion
without interleaving (unlike a more general flatMap(Function)
). Therefore, flatMapStream
and
concatMapStream
are identical operators and are provided as aliases.
The operator closes the Stream
upon cancellation and when it terminates. The exceptions raised when
closing a Stream
are routed to the global error handler (RxJavaPlugins.onError(Throwable)
.
If a Stream
should not be closed, turn it into an Iterable
and use flatMapIterable(Function)
:
source.flatMapIterable(v -> createStream(v)::iterator);
Note that Stream
s can be consumed only once; any subsequent attempt to consume a Stream
will result in an IllegalStateException
.
Primitive streams are not supported and items have to be boxed manually (e.g., via IntStream.boxed()
):
source.flatMapStream(v -> IntStream.rangeClosed(v + 1, v + 10).boxed());
Stream
does not support concurrent usage so creating and/or consuming the same instance multiple times
from multiple threads can lead to undefined behavior.
flatMapStream
does not operate by default on a particular Scheduler
.R
- the element type of the Stream
s and the resultmapper
- the function that receives an upstream item and should return a Stream
whose elements
will be emitted to the downstreamObservable
instanceNullPointerException
- if mapper
is null
flatMap(Function)
,
flatMapIterable(Function)