Class Flowable<T>
- Type Parameters:
T- the type of the items emitted by theFlowable
- All Implemented Interfaces:
Flow.Publisher<T>
- Direct Known Subclasses:
ConnectableFlowable, FlowableProcessor, GroupedFlowable
Flowable class that implements the Reactive Streams Flow.Publisher
Pattern and offers factory methods, intermediate operators and the ability to consume reactive dataflows.
Reactive Streams operates with Publishers which Flowable extends. Many operators
therefore accept general Publishers directly and allow direct interoperation with other
Reactive Streams implementations.
The Flowable hosts the default buffer size of 128 elements for operators, accessible via 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 Flowable follows the protocol
onSubscribe onNext* (onError | onComplete)?
where the stream can be disposed through the Flow.Subscription instance provided to consumers through
Flow.Subscriber.onSubscribe(Subscription).
Unlike the Observable.subscribe() of version 1.x, subscribe(Subscriber) does not allow external cancellation
of a subscription and the Flow.Subscriber instance is expected to expose such capability if needed.
Flowables support backpressure and require Subscribers to signal demand via Flow.Subscription.request(long).
Example:
Disposable d = Flowable.just("Hello world!")
.delay(1, TimeUnit.SECONDS)
.subscribeWith(new DisposableSubscriber<String>() {
@Override public void onStart() {
System.out.println("Start!");
request(1);
}
@Override public void onNext(String t) {
System.out.println(t);
request(1);
}
@Override public void onError(Throwable t) {
t.printStackTrace();
}
@Override public void onComplete() {
System.out.println("Done!");
}
});
Thread.sleep(500);
// the sequence can now be cancelled via dispose()
d.dispose();
The Reactive Streams specification is relatively strict when defining interactions between Publishers and Subscribers, so much so
that there is a significant performance penalty due certain timing requirements and the need to prepare for invalid
request amounts via Flow.Subscription.request(long).
Therefore, RxJava has introduced the FlowableSubscriber interface that indicates the consumer can be driven with relaxed rules.
All RxJava operators are implemented with these relaxed rules in mind.
If the subscribing Subscriber does not implement this interface, for example, due to it being from another Reactive Streams compliant
library, the Flowable will automatically apply a compliance wrapper around it.
Flowable is an abstract class, but it is not advised to implement sources and custom operators by extending the class directly due
to the large amounts of Reactive Streams
rules to be followed to the letter. See the wiki for
some guidance if such custom implementations are necessary.
The recommended way of creating custom Flowables is by using the create(FlowableOnSubscribe, BackpressureStrategy) factory method:
Flowable<String> source = Flowable.create(new FlowableOnSubscribe<String>() {
@Override
public void subscribe(FlowableEmitter<String> emitter) throws Exception {
// signal an item
emitter.onNext("Hello");
// could be some blocking operation
Thread.sleep(1000);
// the consumer might have cancelled the flow
if (emitter.isCancelled()) {
return;
}
emitter.onNext("World");
Thread.sleep(1000);
// the end-of-sequence has to be signaled, otherwise the
// consumers may never finish
emitter.onComplete();
}
}, BackpressureStrategy.BUFFER);
System.out.println("Subscribe!");
source.subscribe(System.out::println);
System.out.println("Done!");
RxJava reactive sources, such as Flowable, are generally synchronous and sequential in nature. In the ReactiveX design, the location (thread)
where operators run is orthogonal to when the operators can work with data. This means that asynchrony and parallelism
has to be explicitly expressed via operators such as subscribeOn(Scheduler), observeOn(Scheduler) and parallel(). In general,
operators featuring a Scheduler parameter are introducing this type of asynchrony into the flow.
For more information see the ReactiveX documentation.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionMirrors the oneFlow.Publisherin anIterableof severalPublishers that first either emits an item or sends a termination notification.ambArray(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Mirrors the oneFlow.Publisherin an array of severalPublishers that first either emits an item or sends a termination notification.ambWith(@NonNull Flow.Publisher<? extends @NonNull T> other) Mirrors theFlow.Publisher(current or provided) that first either emits an item or sends a termination notification.Returns aSinglethat emitstrueif any item emitted by the currentFlowablesatisfies a specified condition, otherwisefalse.final TReturns the first item emitted by thisFlowable, or throwsNoSuchElementExceptionif it emits no items.final TblockingFirst(@NonNull T defaultItem) Returns the first item emitted by thisFlowable, or a default value if it emits no items.final voidblockingForEach(@NonNull Consumer<? super @NonNull T> onNext) Consumes the currentFlowablein a blocking fashion and invokes the givenConsumerwith each upstream item on the current thread until the upstream terminates.final voidblockingForEach(@NonNull Consumer<? super @NonNull T> onNext, int bufferSize) Consumes the currentFlowablein a blocking fashion and invokes the givenConsumerwith each upstream item on the current thread until the upstream terminates.Converts thisFlowableinto anIterable.blockingIterable(int bufferSize) Converts thisFlowableinto anIterable.final TReturns the last item emitted by thisFlowable, or throwsNoSuchElementExceptionif thisFlowableemits no items.final TblockingLast(@NonNull T defaultItem) Returns the last item emitted by thisFlowable, or a default value if it emits no items.Returns anIterablethat returns the latest item emitted by thisFlowable, waiting if necessary for one to become available.blockingMostRecent(@NonNull T initialItem) Returns anIterablethat always returns the item most recently emitted by thisFlowable.Returns anIterablethat blocks until thisFlowableemits another item, then returns that item.final TIf thisFlowablecompletes after emitting a single item, return that item, otherwise throw aNoSuchElementException.final TblockingSingle(@NonNull T defaultItem) If thisFlowablecompletes after emitting a single item, return that item; if it emits more than one item, throw anIllegalArgumentException; if it emits no items, return a default value.Creates a sequentialStreamto consume or process thisFlowablein a blocking manner via the JavaStreamAPI.blockingStream(int prefetch) Creates a sequentialStreamto consume or process thisFlowablein a blocking manner via the JavaStreamAPI.final voidRuns the currentFlowableto a terminal event, ignoring any values and rethrowing any exception.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.final voidblockingSubscribe(@NonNull Flow.Subscriber<? super @NonNull T> subscriber) Subscribes to the source and calls theFlow.Subscribermethods on the current thread.buffer(int count) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.buffer(int count, int skip) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.buffer(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.Returns aFlowablethat emits buffers of items it collects from the currentFlowable.buffer(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, int count, @NonNull Supplier<@NonNull U> bufferSupplier, boolean restartTimerOnMaxSize) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.buffer(@NonNull Flow.Publisher<? extends @NonNull TOpening> openingIndicator, @NonNull Function<? super @NonNull TOpening, @NonNull ? extends Flow.Publisher<? extends @NonNull TClosing>> closingIndicator) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.final <@NonNull TOpening, @NonNull TClosing, @NonNull U extends Collection<? super @NonNull T>>
@NonNull Flowable<U> buffer(@NonNull Flow.Publisher<? extends @NonNull TOpening> openingIndicator, @NonNull Function<? super @NonNull TOpening, @NonNull ? extends Flow.Publisher<? extends @NonNull TClosing>> closingIndicator, @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable.buffer(@NonNull Flow.Publisher<@NonNull B> boundaryIndicator) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.buffer(@NonNull Flow.Publisher<@NonNull B> boundaryIndicator, int initialCapacity) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.buffer(@NonNull Flow.Publisher<@NonNull B> boundaryIndicator, @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.static intReturns the default internal buffer size used by most async operators.cache()Returns aFlowablethat subscribes to thisFlow.Publisherlazily, caches all of its events and replays them, in the same order as received, to all the downstream subscribers.cacheWithInitialCapacity(int initialCapacity) Returns aFlowablethat subscribes to thisFlow.Publisherlazily, caches all of its events and replays them, in the same order as received, to all the downstream subscribers.Returns aFlowablethat emits the upstream items while they can be cast viaClass.cast(Object)until the upstream terminates, or until the upstream signals an item which can't be cast, resulting in aClassCastExceptionto be signaled to the downstream.collect(@NonNull Supplier<? extends @NonNull U> initialItemSupplier, @NonNull BiConsumer<? super @NonNull U, ? super @NonNull T> collector) Collects items emitted by the finite sourceFlow.Publisherinto a single mutable data structure and returns aSinglethat emits this structure.collectInto(@NonNull U initialItem, @NonNull BiConsumer<? super @NonNull U, ? super @NonNull T> collector) Collects items emitted by the finite sourceFlow.Publisherinto a single mutable data structure and returns aSinglethat emits this structure.combineLatest(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatest(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> combiner) Combines two sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from either of the sourcePublishers, where this aggregation is defined by a specified function.combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Function3<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? extends @NonNull R> combiner) Combines three sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Function4<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? extends @NonNull R> combiner) Combines four sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull R>
@NonNull Flowable<R> combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Function5<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? extends @NonNull R> combiner) Combines five sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull R>
@NonNull Flowable<R> combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Function6<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? extends @NonNull R> combiner) Combines six sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull R>
@NonNull Flowable<R> combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Function7<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? extends @NonNull R> combiner) Combines seven sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull R>
@NonNull Flowable<R> combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull Function8<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? extends @NonNull R> combiner) Combines eight sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull T9, @NonNull R>
@NonNull Flowable<R> combineLatest(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull Flow.Publisher<? extends @NonNull T9> source9, @NonNull Function9<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? super @NonNull T9, ? extends @NonNull R> combiner) Combines nine sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatestArray(@NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatestArray(@NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatestArrayDelayError(@NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function.combineLatestArrayDelayError(@NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers terminate.combineLatestDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers terminate.combineLatestDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers terminate.Transform the currentFlowableby applying a particularFlowableTransformerfunction to it.Concatenates elements of eachFlow.Publisherprovided via anIterablesequence into a single sequence of elements without interleaving them.concat(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2) Returns aFlowablethat emits the items emitted by twoFlow.Publishers, one after the other, without interleaving them.concat(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3) Returns aFlowablethat emits the items emitted by threeFlow.Publishers, one after the other, without interleaving them.concat(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull Flow.Publisher<? extends @NonNull T> source4) Returns aFlowablethat emits the items emitted by fourFlow.Publishers, one after the other, without interleaving them.concat(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Returns aFlowablethat emits the items emitted by each of theFlow.Publishers emitted by the sourcePublisher, one after the other, without interleaving them.concat(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch) Returns aFlowablethat emits the items emitted by each of theFlow.Publishers emitted by the sourcePublisher, one after the other, without interleaving them.concatArray(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates a variable number ofFlow.Publishersources.concatArrayDelayError(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates a variable number ofFlow.Publishersources and delays errors from any of them till all terminate.concatArrayEager(int maxConcurrency, int prefetch, @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values.concatArrayEager(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values.concatArrayEagerDelayError(int maxConcurrency, int prefetch, @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values and delaying any errors until all sources terminate.concatArrayEagerDelayError(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values and delaying any errors until all sources terminate.concatDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates theIterablesequence ofFlow.Publishers into a single sequence by subscribing to eachPublisher, one after the other, one at a time and delays any errors till the all innerPublishers terminate.concatDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates theFlow.Publishersequence ofPublishers into a single sequence by subscribing to each innerPublisher, one after the other, one at a time and delays any errors till the all inner and the outerPublishers terminate.concatDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch, boolean tillTheEnd) Concatenates theFlow.Publishersequence ofPublishers into a single sequence by subscribing to each innerPublisher, one after the other, one at a time and delays any errors till the all inner and the outerPublishers terminate.concatEager(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates a sequence ofFlow.Publishers eagerly into a single stream of values.concatEager(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates a sequence ofFlow.Publishers eagerly into a single stream of values and runs a limited number of inner sequences at once.concatEager(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values.concatEager(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values and runs a limited number of inner sequences at once.concatEagerDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates a sequence ofFlow.Publishers eagerly into a single stream of values, delaying errors until all the inner sequences terminate.concatEagerDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates a sequence ofFlow.Publishers 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.concatEagerDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values, delaying errors until all the inner and the outer sequences terminate.concatEagerDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values, delaying errors until all the inner and outer sequences terminate and runs a limited number of inner sequences at once.concatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowablethat emits items resulting from applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.concatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int prefetch) Returns a newFlowablethat emits items resulting from applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.concatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int prefetch, @NonNull Scheduler scheduler) Returns a newFlowablethat emits items resulting from applying a function (on a designated scheduler) that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.final @NonNull CompletableconcatMapCompletable(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream items intoCompletableSources and subscribes to them one after the other completes.final @NonNull CompletableconcatMapCompletable(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, int prefetch) Maps the upstream items intoCompletableSources and subscribes to them one after the other completes.final @NonNull CompletableconcatMapCompletableDelayError(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, delaying all errors till both thisFlowableand all innerCompletableSources terminate.final @NonNull CompletableconcatMapCompletableDelayError(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean tillTheEnd) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, optionally delaying all errors till both thisFlowableand all innerCompletableSources terminate.final @NonNull CompletableconcatMapCompletableDelayError(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, optionally delaying all errors till both thisFlowableand all innerCompletableSources terminate.concatMapDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Maps each of the items into aFlow.Publisher, 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 innerPublishers till all of them terminate.concatMapDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps each of the items into aFlow.Publisher, 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 innerPublishers till all of them terminate.concatMapDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch, @NonNull Scheduler scheduler) Maps each of the upstream items into aFlow.Publisher, subscribes to them one after the other, one at a time and emits their values in order while executing the mapper function on the designated scheduler, delaying any error from either this or any of the innerPublishers till all of them terminate.concatMapEager(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.concatMapEager(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int maxConcurrency, int prefetch) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.concatMapEagerDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.concatMapEagerDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int maxConcurrency, int prefetch) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singleFlowablesequence.concatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper) Returns aFlowablethat concatenate each item emitted by the currentFlowablewith the values in anIterablecorresponding to that item that is generated by a selector.concatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, int prefetch) Returns aFlowablethat concatenate each item emitted by the currentFlowablewith the values in anIterablecorresponding to that item that is generated by a selector.concatMapMaybe(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources and subscribes to them one after the other succeeds or completes, emits their success value if available or terminates immediately if either thisFlowableor the current innerMaybeSourcefail.concatMapMaybe(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, int prefetch) Maps the upstream items intoMaybeSources and subscribes to them one after the other succeeds or completes, emits their success value if available or terminates immediately if either thisFlowableor the current innerMaybeSourcefail.concatMapMaybeDelayError(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and delaying all errors till both thisFlowableand all innerMaybeSources terminate.concatMapMaybeDelayError(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and optionally delaying all errors till both thisFlowableand all innerMaybeSources terminate.concatMapMaybeDelayError(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and optionally delaying all errors till both thisFlowableand all innerMaybeSources terminate.concatMapSingle(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds, emits their success values or terminates immediately if either thisFlowableor the current innerSingleSourcefail.concatMapSingle(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, int prefetch) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds, emits their success values or terminates immediately if either thisFlowableor the current innerSingleSourcefail.concatMapSingleDelayError(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and delays all errors till both thisFlowableand all innerSingleSources terminate.concatMapSingleDelayError(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and optionally delays all errors till both thisFlowableand all innerSingleSources terminate.concatMapSingleDelayError(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and optionally delays errors till both thisFlowableand all innerSingleSources terminate.concatMapStream(@NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.concatMapStream(@NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper, int prefetch) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.concatWith(@NonNull CompletableSource other) Returns aFlowablethat emits items from thisFlowableand when it completes normally, the otherCompletableSourceis subscribed to and the returnedFlowableemits its terminal events.concatWith(@NonNull MaybeSource<? extends @NonNull T> other) Returns aFlowablethat emits the items from thisFlowablefollowed by the success item or terminal events of the otherMaybeSource.concatWith(@NonNull SingleSource<? extends @NonNull T> other) Returns aFlowablethat emits the items from thisFlowablefollowed by the success item or error event of the otherSingleSource.concatWith(@NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items emitted from the currentFlowable, then the next, one after the other, without interleaving them.count()create(@NonNull FlowableOnSubscribe<@NonNull T> source, @NonNull BackpressureStrategy mode) Provides an API (via a coldFlowable) that bridges the reactive world with the callback-style, generally non-backpressured world.Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires.Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler.debounce(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler.debounce(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull U>> debounceIndicator) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by another item within a computed debounce duration.defaultIfEmpty(@NonNull T defaultItem) Returns aFlowablethat emits the items emitted by the currentFlowableor a specified default item if the currentFlowableis empty.Returns aFlowablethat calls aFlow.Publisherfactory to create aPublisherfor each newFlow.Subscriberthat subscribes.Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay.Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay.Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay.Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay.delay(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull U>> itemDelayIndicator) Returns aFlowablethat delays the emissions of the currentFlowablevia anotherFlow.Publisheron a per-item basis.delay(@NonNull Flow.Publisher<@NonNull U> subscriptionIndicator, @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemDelayIndicator) Returns aFlowablethat delays the subscription to and emissions from the currentFlowablevia anotherFlow.Publisheron a per-item basis.delaySubscription(long time, @NonNull TimeUnit unit) Returns aFlowablethat delays the subscription to the currentFlowableby a given amount of time.delaySubscription(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat delays the subscription to the currentFlowableby a given amount of time, both waiting and subscribing on a givenScheduler.delaySubscription(@NonNull Flow.Publisher<@NonNull U> subscriptionIndicator) Returns aFlowablethat delays the subscription to thisFlow.Publisheruntil the otherPublisheremits an element or completes normally.dematerialize(@NonNull Function<@NonNull ? super @NonNull T, @NonNull Notification<@NonNull R>> selector) Returns aFlowablethat reverses the effect ofmaterializeby transforming theNotificationobjects extracted from the source items via a selector function into their respectiveFlow.Subscribersignal types.distinct()Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct based onObject.equals(Object)comparison.Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct according to a key selector function and based onObject.equals(Object)comparison of the objects returned by the key selector function.distinct(@NonNull Function<? super @NonNull T, @NonNull K> keySelector, @NonNull Supplier<? extends Collection<? super @NonNull K>> collectionSupplier) Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct according to a key selector function and based onObject.equals(Object)comparison of the objects returned by the key selector function.Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct from their immediate predecessors based onObject.equals(Object)comparison.distinctUntilChanged(@NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> comparer) Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct from their immediate predecessors when compared with each other via the provided comparator function.Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct from their immediate predecessors, according to a key selector function and based onObject.equals(Object)comparison of those objects returned by the key selector function.doAfterNext(@NonNull Consumer<? super @NonNull T> onAfterNext) Calls the specified consumer with the current item after this item has been emitted to the downstream.doAfterTerminate(@NonNull Action onAfterTerminate) Calls the specified action after thisFlowablesignalsonErrororonCompleteor gets canceled by the downstream.doOnCancel(@NonNull Action onCancel) Calls the cancelActionif the downstream cancels the sequence.doOnComplete(@NonNull Action onComplete) Invokes aConsumerwith aNotificationinstances matching the signals emitted by the currentFlowablebefore they are forwarded to the downstream.doOnEach(@NonNull Flow.Subscriber<? super @NonNull T> subscriber) Calls the appropriate methods of the givenFlow.Subscriberwhen the currentFlowablesignals events before forwarding it to the downstream.doOnLifecycle(@NonNull Consumer<? super Flow.Subscription> onSubscribe, @NonNull LongConsumer onRequest, @NonNull Action onCancel) Calls the appropriateonXXXmethod (shared between allFlow.Subscribers) for the lifecycle events of the sequence (subscription, cancellation, requesting).Calls the givenConsumerwith the value emitted by the currentFlowablebefore forwarding it to the downstream.doOnRequest(@NonNull LongConsumer onRequest) Calls the givenLongConsumerwith the request amount from the downstream before forwarding it to the currentFlowable.doOnSubscribe(@NonNull Consumer<? super Flow.Subscription> onSubscribe) Calls the givenConsumerwith theFlow.Subscriptionprovided by the currentFlowableupon subscription from the downstream before forwarding it to the subscriber'sonSubscribemethod.doOnTerminate(@NonNull Action onTerminate) Calls the givenActionwhen the currentFlowablecompletes normally or with an error before those signals are forwarded to the downstream.elementAt(long index) Returns aMaybethat emits the single item at a specified index in a sequence of emissions from thisFlowableor completes if thisFlowablesequence has fewer elements than index.Returns aSinglethat emits the item found at a specified index in a sequence of emissions from thisFlowable, or a default item if that index is out of range.elementAtOrError(long index) Returns aSinglethat emits the item found at a specified index in a sequence of emissions from thisFlowableor signals aNoSuchElementExceptionif thisFlowablehas fewer elements than index.empty()Returns aFlowablethat emits no items to theFlow.Subscriberand immediately invokes itsonCompletemethod.Returns aFlowablethat invokes aFlow.Subscriber'sonErrormethod when theSubscribersubscribes to it.Returns aFlowablethat invokes aFlow.Subscriber'sonErrormethod when theSubscribersubscribes to it.Filters items emitted by the currentFlowableby only emitting those that satisfy a specified predicate.Returns aSinglethat emits only the very first item emitted by thisFlowable, or a default item if thisFlowablecompletes without emitting anything.Returns aMaybethat emits only the very first item emitted by thisFlowableor completes if thisFlowableis empty.Returns aSinglethat emits only the very first item emitted by thisFlowableor signals aNoSuchElementExceptionif thisFlowableis empty.final @NonNull CompletionStage<T> Signals the first upstream item or aNoSuchElementExceptionif the upstream is empty via aCompletionStage.final @NonNull CompletionStage<T> firstStage(@NonNull T defaultItem) Signals the first upstream item (or the default item if the upstream is empty) via aCompletionStage.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency, int bufferSize) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int maxConcurrency) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onNextMapper, @NonNull Function<? super Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onErrorMapper, @NonNull Supplier<? extends Flow.Publisher<? extends @NonNull R>> onCompleteSupplier) Returns aFlowablethat applies a function to each item emitted or notification raised by the currentFlowableand then flattens theFlow.Publishers returned from these functions and emits the resulting items.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onNextMapper, @NonNull Function<Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onErrorMapper, @NonNull Supplier<? extends Flow.Publisher<? extends @NonNull R>> onCompleteSupplier, int maxConcurrency) Returns aFlowablethat applies a function to each item emitted or notification raised by the currentFlowableand then flattens theFlow.Publishers returned from these functions and emits the resulting items, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified innerFlow.Publisher.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors, int maxConcurrency) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors, int maxConcurrency, int bufferSize) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.flatMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, int maxConcurrency) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.final @NonNull CompletableflatMapCompletable(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps each element of the upstreamFlowableintoCompletableSources, subscribes to them and waits until the upstream and allCompletableSources complete.final @NonNull CompletableflatMapCompletable(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoCompletableSources, subscribes to them and waits until the upstream and allCompletableSources complete, optionally delaying all errors.flatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper) flatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, int bufferSize) flatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull V> combiner) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence where the resulting items will be the combination of the original item and each inner item of the respectiveIterableas returned by theresultSelectorBiFunction.flatMapIterable(@NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull V> combiner, int prefetch) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence where the resulting items will be the combination of the original item and each inner item of the respectiveIterableas returned by theresultSelectorBiFunction.flatMapMaybe(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps each element of the upstreamFlowableintoMaybeSources, subscribes to all of them and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence.flatMapMaybe(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoMaybeSources, subscribes to at mostmaxConcurrencyMaybeSources at a time and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence, optionally delaying all errors.flatMapSingle(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps each element of the upstreamFlowableintoSingleSources, subscribes to all of them and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence.flatMapSingle(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoSingleSources, subscribes to at mostmaxConcurrencySingleSources at a time and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence, optionally delaying all errors.flatMapStream(@NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.flatMapStream(@NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper, int prefetch) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.final @NonNull DisposableSubscribes to the currentFlowableand receives notifications for each element.final @NonNull DisposableforEachWhile(@NonNull Predicate<? super @NonNull T> onNext) Subscribes to the currentFlowableand receives notifications for each element until theonNextPredicate returnsfalse.final @NonNull DisposableforEachWhile(@NonNull Predicate<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError) Subscribes to the currentFlowableand receives notifications for each element and error events until theonNextPredicate returnsfalse.final @NonNull DisposableforEachWhile(@NonNull Predicate<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete) Subscribes to the currentFlowableand receives notifications for each element and the terminal events until theonNextPredicate returnsfalse.fromAction(@NonNull Action action) Returns aFlowableinstance that runs the givenActionfor eachFlow.Subscriberand emits either its exception or simply completes.Converts an array into aFlow.Publisherthat emits the items in the array.fromCallable(@NonNull Callable<? extends @NonNull T> callable) Returns aFlowablethat, when aFlow.Subscribersubscribes to it, invokes a function you specify and then emits the value returned from that function.fromCompletable(@NonNull CompletableSource completableSource) Wraps aCompletableSourceinto aFlowable.fromCompletionStage(@NonNull CompletionStage<@NonNull T> stage) Signals the completion value or error of the given (hot)CompletionStage-based asynchronous calculation.fromFuture(@NonNull Future<? extends @NonNull T> future) Converts aFutureinto aFlow.Publisher.fromIterable(@NonNull Iterable<? extends @NonNull T> source) Converts anIterablesequence into aFlow.Publisherthat emits the items in the sequence.fromMaybe(@NonNull MaybeSource<@NonNull T> maybe) Returns aFlowableinstance that when subscribed to, subscribes to theMaybeSourceinstance and emitsonSuccessas a single item or forwards anyonCompleteoronErrorsignal.fromObservable(@NonNull ObservableSource<@NonNull T> source, @NonNull BackpressureStrategy strategy) Converts the givenObservableSourceinto aFlowableby applying the specified backpressure strategy.fromOptional(@NonNull Optional<@NonNull T> optional) Converts the existing value of the provided optional into ajust(Object)or an empty optional into anempty()Flowableinstance.fromPublisher(@NonNull Flow.Publisher<? extends @NonNull T> publisher) fromRunnable(@NonNull Runnable run) Returns aFlowableinstance that runs the givenRunnablefor eachFlow.Subscriberand emits either its unchecked exception or simply completes.fromSingle(@NonNull SingleSource<@NonNull T> source) Returns aFlowableinstance that when subscribed to, subscribes to theSingleSourceinstance and emitsonSuccessas a single item or forwards theonErrorsignal.fromStream(@NonNull Stream<@NonNull T> stream) Converts aStreaminto a finiteFlowableand emits its items in the sequence.fromSupplier(@NonNull Supplier<? extends @NonNull T> supplier) Returns aFlowablethat, when aFlow.Subscribersubscribes to it, invokes a supplier function you specify and then emits the value returned from that function.Returns a cold, synchronous, stateless and backpressure-aware generator of values.generate(@NonNull Supplier<@NonNull S> initialState, @NonNull BiConsumer<@NonNull S, Emitter<@NonNull T>> generator) Returns a cold, synchronous, stateful and backpressure-aware generator of values.generate(@NonNull Supplier<@NonNull S> initialState, @NonNull BiConsumer<@NonNull S, Emitter<@NonNull T>> generator, @NonNull Consumer<? super @NonNull S> disposeState) Returns a cold, synchronous, stateful and backpressure-aware generator of values.generate(@NonNull Supplier<@NonNull S> initialState, @NonNull BiFunction<@NonNull S, @NonNull Emitter<@NonNull T>, @NonNull S> generator) Returns a cold, synchronous, stateful and backpressure-aware generator of values.generate(@NonNull Supplier<@NonNull S> initialState, @NonNull BiFunction<@NonNull S, @NonNull Emitter<@NonNull T>, @NonNull S> generator, @NonNull Consumer<? super @NonNull S> disposeState) Returns a cold, synchronous, stateful and backpressure-aware generator of values.final <@NonNull K>
@NonNull Flowable<GroupedFlowable<K, T>> Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.final <@NonNull K>
@NonNull Flowable<GroupedFlowable<K, T>> groupBy(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, boolean delayError) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.final <@NonNull K, @NonNull V>
@NonNull Flowable<GroupedFlowable<K, V>> groupBy(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.final <@NonNull K, @NonNull V>
@NonNull Flowable<GroupedFlowable<K, V>> groupBy(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.final <@NonNull K, @NonNull V>
@NonNull Flowable<GroupedFlowable<K, V>> groupBy(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError, int bufferSize) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.final <@NonNull K, @NonNull V>
@NonNull Flowable<GroupedFlowable<K, V>> groupBy(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError, int bufferSize, @NonNull Function<? super Consumer<Object>, ? extends Map<@NonNull K, Object>> evictingMapFactory) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables.groupJoin(@NonNull Flow.Publisher<? extends @NonNull TRight> other, @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull TLeftEnd>> leftEnd, @NonNull Function<? super @NonNull TRight, @NonNull ? extends Flow.Publisher<@NonNull TRightEnd>> rightEnd, @NonNull BiFunction<? super @NonNull T, ? super Flowable<@NonNull TRight>, ? extends @NonNull R> resultSelector) Returns aFlowablethat correlates twoFlow.Publishers when they overlap in time and groups the results.hide()Hides the identity of thisFlowableand itsFlow.Subscription.final @NonNull CompletableIgnores all items emitted by the currentFlowableand only callsonCompleteoronError.Returns aFlowablethat emits a0Lafter theinitialDelayand ever-increasing numbers after eachperiodof time thereafter.Returns aFlowablethat emits a0Lafter theinitialDelayand ever-increasing numbers after eachperiodof time thereafter, on a specifiedScheduler.Returns aFlowablethat emits a sequential number every specified interval of time.Returns aFlowablethat emits a sequential number every specified interval of time, on a specifiedScheduler.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.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.isEmpty()join(@NonNull Flow.Publisher<? extends @NonNull TRight> other, @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull TLeftEnd>> leftEnd, @NonNull Function<? super @NonNull TRight, @NonNull ? extends Flow.Publisher<@NonNull TRightEnd>> rightEnd, @NonNull BiFunction<? super @NonNull T, ? super @NonNull TRight, ? extends @NonNull R> resultSelector) Correlates the items emitted by twoFlow.Publishers based on overlapping durations.Returns aFlowablethat signals the given (constant reference) item and then completes.Converts two items into aFlow.Publisherthat emits those items.Converts three items into aFlow.Publisherthat emits those items.Converts four items into aFlow.Publisherthat emits those items.Converts five items into aFlow.Publisherthat emits those items.just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6) Converts six items into aFlow.Publisherthat emits those items.just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7) Converts seven items into aFlow.Publisherthat emits those items.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) Converts eight items into aFlow.Publisherthat emits those items.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) Converts nine items into aFlow.Publisherthat emits those items.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) Converts ten items into aFlow.Publisherthat emits those items.Returns aSinglethat emits only the last item emitted by thisFlowable, or a default item if thisFlowablecompletes without emitting any items.Returns aMaybethat emits the last item emitted by thisFlowableor completes if thisFlowableis empty.Returns aSinglethat emits only the last item emitted by thisFlowableor signals aNoSuchElementExceptionif thisFlowableis empty.final @NonNull CompletionStage<T> Signals the last upstream item or aNoSuchElementExceptionif the upstream is empty via aCompletionStage.final @NonNull CompletionStage<T> Signals the last upstream item (or the default item if the upstream is empty) via aCompletionStage.This method requires advanced knowledge about building operators, please consider other standard composition methods first; Returns aFlowablewhich, when subscribed to, invokes theapply(Subscriber)method of the providedFlowableOperatorfor each individual downstreamFlow.Subscriberand allows the insertion of a custom operator by accessing the downstream'sSubscriberduring this subscription phase and providing a newSubscriber, containing the custom operator's intended business logic, that will be used in the subscription process going further upstream.Returns aFlowablethat applies a specified function to each item emitted by the currentFlowableand emits the results of these function applications.Maps each upstream value into anOptionaland emits the contained item if not empty.final @NonNull Flowable<Notification<T>> Returns aFlowablethat represents all of the emissions and notifications from the currentFlowableinto emissions marked with their original types withinNotificationobjects.merge(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens anIterableofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.merge(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int bufferSize) Flattens anIterableofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.merge(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2) Flattens twoFlow.Publishers into a singlePublisher, without any transformation.merge(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3) Flattens threeFlow.Publishers into a singlePublisher, without any transformation.merge(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull Flow.Publisher<? extends @NonNull T> source4) Flattens fourFlow.Publishers into a singlePublisher, without any transformation.merge(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens aFlow.Publisherthat emitsPublishers into a singlePublisherthat emits the items emitted by thosPublishers , without any transformation.merge(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens aFlow.Publisherthat emitsPublishers into a singlePublisherthat emits the items emitted by thosePublishers, without any transformation, while limiting the maximum number of concurrent subscriptions to thesePublishers.mergeArray(int maxConcurrency, int bufferSize, @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.mergeArray(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, without any transformation.mergeArrayDelayError(int maxConcurrency, int bufferSize, @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.mergeArrayDelayError(@NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into oneFlowable, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.mergeDelayError(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int bufferSize) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.mergeDelayError(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2) Flattens twoFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3) Flattens threeFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull Flow.Publisher<? extends @NonNull T> source4) Flattens fourFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens aFlow.Publisherthat emitsPublishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.mergeDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens aFlow.Publisherthat emitsPublishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.mergeWith(@NonNull CompletableSource other) Relays the items of thisFlowableand completes only when the otherCompletableSourcecompletes as well.mergeWith(@NonNull MaybeSource<? extends @NonNull T> other) Merges the sequence of items of thisFlowablewith the success value of the otherMaybeSourceor waits for both to complete normally if theMaybeSourceis empty.mergeWith(@NonNull SingleSource<? extends @NonNull T> other) Merges the sequence of items of thisFlowablewith the success value of the otherSingleSource.mergeWith(@NonNull Flow.Publisher<? extends @NonNull T> other) Flattens this and anotherFlow.Publisherinto a singlePublisher, without any transformation.never()Returns aFlowablethat never sends any items or notifications to aFlow.Subscriber.Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer ofbufferSize()slots.Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer and optionally delaysonErrornotifications.Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer of configurable size and optionally delaysonErrornotifications.Filters the items emitted by the currentFlowable, only emitting those of the specified type.Buffers an unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.onBackpressureBuffer(boolean delayError) Buffers an unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, optionally delaying an error until all buffered items have been consumed.onBackpressureBuffer(int capacity) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, and canceling the flow.onBackpressureBuffer(int capacity, boolean delayError) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, and canceling the flow.onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded, @NonNull Action onOverflow) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded, @NonNull Action onOverflow, @NonNull Consumer<? super @NonNull T> onDropped) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.onBackpressureBuffer(int capacity, @NonNull Action onOverflow) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, canceling the flow and calling theonOverflowaction.onBackpressureBuffer(long capacity, @Nullable Action onOverflow, @NonNull BackpressureOverflowStrategy overflowStrategy) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.onBackpressureBuffer(long capacity, @Nullable Action onOverflow, @NonNull BackpressureOverflowStrategy overflowStrategy, @NonNull Consumer<? super @NonNull T> onDropped) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.Drops items from the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it).onBackpressureDrop(@NonNull Consumer<? super @NonNull T> onDrop) Drops items from the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and calls the givenConsumerwith such dropped items.Drops all but the latest item emitted by the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.onBackpressureLatest(@NonNull Consumer<? super @NonNull T> onDropped) Drops all but the latest item emitted by the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.onBackpressureReduce(@NonNull BiFunction<@NonNull T, @NonNull T, @NonNull T> reducer) Reduces a sequence of two not emitted values via a function into a single value if the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.onBackpressureReduce(@NonNull Supplier<@NonNull R> supplier, @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> reducer) Reduces upstream values into an aggregate value, provided by a supplier and combined via a reducer function, while the downstream is not ready to receive items, then emits this aggregate value when the downstream becomes ready.Returns aFlowableinstance that if the currentFlowableemits an error, it will emit anonCompleteand swallow the throwable.onErrorComplete(@NonNull Predicate<? super Throwable> predicate) Returns aFlowableinstance that if the currentFlowableemits an error and the predicate returnstrue, it will emit anonCompleteand swallow the throwable.onErrorResumeNext(@NonNull Function<? super Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> fallbackSupplier) Resumes the flow with aFlow.Publisherreturned for the failureThrowableof the currentFlowableby a function instead of signaling the error viaonError.onErrorResumeWith(@NonNull Flow.Publisher<? extends @NonNull T> fallback) Resumes the flow with the givenFlow.Publisherwhen the currentFlowablefails instead of signaling the error viaonError.Ends the flow with a last item returned by a function for theThrowableerror signaled by the currentFlowableinstead of signaling the error viaonError.onErrorReturnItem(@NonNull T item) Ends the flow with the given last item when the currentFlowablefails instead of signaling the error viaonError.Nulls out references to the upstream producer and downstreamFlow.Subscriberif the sequence is terminated or downstream cancels.final @NonNull ParallelFlowable<T> parallel()Parallelizes the flow by creating multiple 'rails' (equal to the number of CPUs) and dispatches the upstream items to them in a round-robin fashion.final @NonNull ParallelFlowable<T> parallel(int parallelism) Parallelizes the flow by creating the specified number of 'rails' and dispatches the upstream items to them in a round-robin fashion.final @NonNull ParallelFlowable<T> parallel(int parallelism, int prefetch) Parallelizes the flow by creating the specified number of 'rails' and dispatches the upstream items to them in a round-robin fashion and uses the defined per-'rail' prefetch amount.final @NonNull ConnectableFlowable<T> publish()Returns aConnectableFlowable, which is a variety ofFlow.Publisherthat waits until itsconnectmethod is called before it begins emitting items to thoseFlow.Subscribers that have subscribed to it.final @NonNull ConnectableFlowable<T> publish(int bufferSize) Returns aConnectableFlowable, which is a variety ofFlow.Publisherthat waits until itsconnectmethod is called before it begins emitting items to thoseFlow.Subscribers that have subscribed to it.publish(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> selector, int prefetch) Returns aFlowablethat emits the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the underlying sequence.publish(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector) Returns aFlowablethat emits the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the underlying sequence.range(int start, int count) Returns aFlowablethat emits a sequence ofIntegers within a specified range.rangeLong(long start, long count) Returns aFlowablethat emits a sequence ofLongs within a specified range.rebatchRequests(int n) Requestsninitially from the upstream and then 75% ofnsubsequently after 75% ofnvalues have been emitted to the downstream.Returns aMaybethat applies a specified accumulator function to the first item emitted by the currentFlowable, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, and emits the final result from the final call to your function as its sole item.Returns aSinglethat applies a specified accumulator function to the first item emitted by the currentFlowableand a specified seed value, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, emitting the final result from the final call to your function as its sole item.reduceWith(@NonNull Supplier<@NonNull R> seedSupplier, @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> reducer) Returns aSinglethat applies a specified accumulator function to the first item emitted by the currentFlowableand a seed value derived from calling a specifiedseedSupplier, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, emitting the final result from the final call to your function as its sole item.repeat()Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableindefinitely.repeat(long times) Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableat mostcounttimes.Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableuntil the provided stop function returnstrue.repeatWhen(@NonNull Function<? super Flowable<Object>, @NonNull ? extends Flow.Publisher<@NonNull ?>> handler) Returns aFlowablethat emits the same values as the currentFlowablewith the exception of anonComplete.final @NonNull ConnectableFlowable<T> replay()Returns aConnectableFlowablethat shares a single subscription to the underlyingFlow.Publisherthat will replay all of its items and notifications to any futureFlow.Subscriber.final @NonNull ConnectableFlowable<T> replay(int bufferSize) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> replay(int bufferSize, boolean eagerTruncate) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems that were emitted during a specified time window.final @NonNull ConnectableFlowable<T> Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays a maximum ofbufferSizeitems that are emitted within a specified time window to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> replay(int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays a maximum ofbufferSizeitems that are emitted within a specified time window to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers.final @NonNull ConnectableFlowable<T> Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector) Returns aFlowablethat emits items that are the results of invoking a specified selector on the items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replayingbufferSizenotifications.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replayingbufferSizenotifications.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull TimeUnit unit) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull TimeUnit unit) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.replay(@NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.retry()Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonError(infinite retry count).retry(long times) Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonErrorup to a specified number of retries.Retries at most times or until the predicate returnsfalse, whichever happens first.Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonErrorand the predicate returnstruefor that specific exception and retry count.Retries the currentFlowableif the predicate returnstrue.Retries until the given stop function returnstrue.retryWhen(@NonNull Function<? super Flowable<Throwable>, @NonNull ? extends Flow.Publisher<@NonNull ?>> handler) Returns aFlowablethat emits the same values as the currentFlowablewith the exception of anonError.final voidsafeSubscribe(@NonNull Flow.Subscriber<? super @NonNull T> subscriber) Subscribes to the currentFlowableand wraps the givenFlow.Subscriberinto aSafeSubscriber(if not already aSafeSubscriber) that deals with exceptions thrown by a misbehavingSubscriber(that doesn't follow the Reactive Streams specification).Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals.Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals and optionally emit the very last upstream item when the upstream completes.Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularScheduler.Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularSchedulerand optionally emit the very last upstream item when the upstream completes.sample(long period, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast, @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularSchedulerand optionally emit the very last upstream item when the upstream completes.sample(@NonNull Flow.Publisher<@NonNull U> sampler) Returns aFlowablethat, when the specifiedsamplerFlow.Publisheremits an item or completes, emits the most recently emitted item (if any) emitted by the currentFlowablesince the previous emission from thesamplerPublisher.sample(@NonNull Flow.Publisher<@NonNull U> sampler, boolean emitLast) Returns aFlowablethat, when the specifiedsamplerFlow.Publisheremits an item or completes, emits the most recently emitted item (if any) emitted by the currentFlowablesince the previous emission from thesamplerPublisherand optionally emit the very last upstream item when the upstream or otherPublishercomplete.Returns aFlowablethat emits the first value emitted by the currentFlowable, then emits one value for each subsequent value emitted by the currentFlowable.scan(@NonNull R initialValue, @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> accumulator) Returns aFlowablethat emits the provided initial (seed) value, then emits one value for each value emitted by the currentFlowable.scanWith(@NonNull Supplier<@NonNull R> seedSupplier, @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> accumulator) Returns aFlowablethat emits the provided initial (seed) value, then emits one value for each value emitted by the currentFlowable.sequenceEqual(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise.sequenceEqual(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, int bufferSize) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise.sequenceEqual(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> isEqual) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise based on the results of a specified equality function.sequenceEqual(@NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> isEqual, int bufferSize) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise based on the results of a specified equality function.Forces the currentFlowable's emissions and notifications to be serialized and for it to obey thePublishercontract in other ways.share()Returns a newFlowablethat multicasts (and shares a single subscription to) the currentFlowable.Returns aSinglethat emits the single item emitted by the currentFlowableif it emits only a single item, or a default item if the currentFlowableemits no items.Returns aMaybethat completes if thisFlowableis empty, signals one item if thisFlowablesignals exactly one item or signals anIllegalArgumentExceptionif thisFlowablesignals more than one item.Returns aSinglethat emits the single item emitted by thisFlowable, if thisFlowableemits only a single item, otherwise if thisFlowablecompletes without emitting any items aNoSuchElementExceptionwill be signaled and if thisFlowableemits more than one item, anIllegalArgumentExceptionwill be signaled.final @NonNull CompletionStage<T> Signals the only expected upstream item, aNoSuchElementExceptionif the upstream is empty or signalsIllegalArgumentExceptionif the upstream has more than one item via aCompletionStage.final @NonNull CompletionStage<T> singleStage(@NonNull T defaultItem) Signals the only expected upstream item (or the default item if the upstream is empty) or signalsIllegalArgumentExceptionif the upstream has more than one item via aCompletionStage.skip(long count) Returns aFlowablethat skips the firstcountitems emitted by the currentFlowableand emits the remainder.Returns aFlowablethat skips values emitted by the currentFlowablebefore a specified time window elapses.Returns aFlowablethat skips values emitted by the currentFlowablebefore a specified time window on a specifiedSchedulerelapses.skipLast(int count) Returns aFlowablethat drops a specified number of items from the end of the sequence emitted by the currentFlowable.Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window before the source completes.Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window before the source completes.Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window (defined on a specified scheduler) before the source completes.Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window (defined on a specified scheduler) before the source completes.skipLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window (defined on a specified scheduler) before the source completes.skipUntil(@NonNull Flow.Publisher<@NonNull U> other) Returns aFlowablethat skips items emitted by the currentFlowableuntil a secondFlow.Publisheremits an item.Returns aFlowablethat skips all items emitted by the currentFlowableas long as a specified condition holdstrue, but emits all further source items as soon as the condition becomesfalse.sorted()Returns aFlowablethat emits the events emitted by sourceFlow.Publisher, in a sorted order.Returns aFlowablethat emits the events emitted by sourceFlow.Publisher, in a sorted order based on a specified comparison function.startWith(@NonNull CompletableSource other) Returns aFlowablewhich first runs the otherCompletableSourcethen the currentFlowableif the other completed normally.startWith(@NonNull MaybeSource<@NonNull T> other) Returns aFlowablewhich first runs the otherMaybeSourcethen the currentFlowableif the other succeeded or completed normally.startWith(@NonNull SingleSource<@NonNull T> other) Returns aFlowablewhich first runs the otherSingleSourcethen the currentFlowableif the other succeeded normally.startWith(@NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items in a specifiedFlow.Publisherbefore it begins to emit items emitted by the currentFlowable.startWithArray(@NonNull T... items) Returns aFlowablethat emits the specified items before it begins to emit items emitted by the currentFlowable.startWithItem(@NonNull T item) Returns aFlowablethat emits a specified item before it begins to emit items emitted by the currentFlowable.startWithIterable(@NonNull Iterable<? extends @NonNull T> items) Returns aFlowablethat emits the items in a specifiedIterablebefore it begins to emit items emitted by the currentFlowable.final @NonNull DisposableSubscribes to the currentFlowableand ignoresonNextandonCompleteemissions.final voidsubscribe(@NonNull FlowableSubscriber<? super @NonNull T> subscriber) Establish a connection between thisFlowableand the givenFlowableSubscriberand start streaming events based on the demand of theFlowableSubscriber.final @NonNull DisposableSubscribes to the currentFlowableand provides a callback to handle the items it emits.final @NonNull Disposablesubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError) Subscribes to the currentFlowableand provides callbacks to handle the items it emits and any error notification it issues.final @NonNull Disposablesubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete) Subscribes to the currentFlowableand provides callbacks to handle the items it emits and any error or completion notification it issues.final @NonNull Disposablesubscribe(@NonNull Consumer<? super @NonNull T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete, @NonNull DisposableContainer container) Wraps the given onXXX callbacks into aDisposableFlow.Subscriber, adds it to the givenDisposableContainerand ensures, that if the upstream terminates or this particularDisposableis disposed, theSubscriberis removed from the given container.final voidsubscribe(@NonNull Flow.Subscriber<? super @NonNull T> subscriber) protected abstract voidsubscribeActual(@NonNull Flow.Subscriber<? super @NonNull T> subscriber) Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingFlow.Subscribers.subscribeOn(@NonNull Scheduler scheduler) subscribeOn(@NonNull Scheduler scheduler, boolean requestOn) Asynchronously subscribesFlow.Subscribers to the currentFlowableon the specifiedScheduleroptionally reroutes requests from other threads to the sameSchedulerthread.final <@NonNull E extends Flow.Subscriber<? super @NonNull T>>
EsubscribeWith(@NonNull E subscriber) Subscribes a givenFlow.Subscriber(subclass) to thisFlowableand returns the givenSubscriberas is.switchIfEmpty(@NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items emitted by the currentFlowableor the items of an alternateFlow.Publisherif the currentFlowableis empty.switchMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers.switchMap(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int bufferSize) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers.final @NonNull CompletableswitchMapCompletable(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream values intoCompletableSources, subscribes to the newer one while disposing the subscription to the previousCompletableSource, thus keeping at most one activeCompletableSourcerunning.final @NonNull CompletableswitchMapCompletableDelayError(@NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream values intoCompletableSources, subscribes to the newer one while disposing the subscription to the previousCompletableSource, thus keeping at most one activeCompletableSourcerunning and delaying any main or inner errors until all of them terminate.switchMapDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers and delays any error until allPublishers terminate.switchMapDelayError(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int bufferSize) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers and delays any error until allPublishers terminate.switchMapMaybe(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources 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 thisFlowableor any of the active innerMaybeSources fail.switchMapMaybeDelayError(@NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources 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 thisFlowableor the innerMaybeSources until all terminate.switchMapSingle(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources 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 while failing immediately if thisFlowableor any of the active innerSingleSources fail.switchMapSingleDelayError(@NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources 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, delaying errors from thisFlowableor the innerSingleSources until all terminate.switchOnNext(@NonNull Flow.Publisher<? extends Flow.Publisher<? extends @NonNull T>> sources, int bufferSize) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers.switchOnNext(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers.switchOnNextDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers and delays any exception until allPublishers terminate.switchOnNextDelayError(@NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers and delays any exception until allPublishers terminate.take(long count) Returns aFlowablethat emits only the firstcountitems emitted by the currentFlowable.Returns aFlowablethat emits those items emitted by sourceFlow.Publisherbefore a specified time runs out.Returns aFlowablethat emits those items emitted by sourceFlow.Publisherbefore a specified time (on a specifiedScheduler) runs out.takeLast(int count) Returns aFlowablethat emits at most the lastcountitems emitted by the currentFlowable.Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a givenScheduler.takeLast(long count, long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a givenScheduler.Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.takeLast(long time, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.Returns aFlowablethat emits items emitted by the currentFlowable, checks the specified predicate for each item, and then completes when the condition is satisfied.takeUntil(@NonNull Flow.Publisher<@NonNull U> other) Returns aFlowablethat emits the items emitted by the currentFlowableuntil a secondFlow.Publisheremits an item or completes.Returns aFlowablethat emits items emitted by the currentFlowableso long as each item satisfied a specified condition, and then completes as soon as this condition is not satisfied.final @NonNull TestSubscriber<T> test()final @NonNull TestSubscriber<T> test(long initialRequest) Creates aTestSubscriberwith the given initial request amount and subscribes it to thisFlowable.final @NonNull TestSubscriber<T> test(long initialRequest, boolean cancel) Creates aTestSubscriberwith the given initial request amount, optionally cancels it before the subscription and subscribes it to thisFlowable.throttleFirst(long windowDuration, @NonNull TimeUnit unit) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration.throttleFirst(long skipDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration, where the windows are managed by a specifiedScheduler.throttleFirst(long skipDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration, where the windows are managed by a specifiedScheduler.throttleLast(long intervalDuration, @NonNull TimeUnit unit) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration.throttleLast(long intervalDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration, where the duration is governed by a specifiedScheduler.throttleLast(long intervalDuration, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration, where the duration is governed by a specifiedScheduler.throttleLatest(long timeout, @NonNull TimeUnit unit) Throttles items from the upstreamFlowableby first emitting the next item from upstream, then periodically emitting the latest item (if any) when the specified timeout elapses between them.throttleLatest(long timeout, @NonNull TimeUnit unit, boolean emitLast) Throttles items from the upstreamFlowableby first emitting the next item from upstream, then periodically emitting the latest item (if any) when the specified timeout elapses between them.throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Throttles items from the upstreamFlowableby first emitting the next item from upstream, then periodically emitting the latest item (if any) when the specified timeout elapses between them.throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast) Throttles items from the upstreamFlowableby first emitting the next item from upstream, then periodically emitting the latest item (if any) when the specified timeout elapses between them.throttleLatest(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, boolean emitLast, @NonNull Consumer<? super @NonNull T> onDropped) Throttles items from the upstreamFlowableby 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.throttleWithTimeout(long timeout, @NonNull TimeUnit unit) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires.throttleWithTimeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler.throttleWithTimeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler.Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable.timeInterval(@NonNull Scheduler scheduler) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable, where this interval is computed on a specifiedScheduler.timeInterval(@NonNull TimeUnit unit) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable.timeInterval(@NonNull TimeUnit unit, @NonNull Scheduler scheduler) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable, where this interval is computed on a specifiedScheduler.Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item.Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item, where this policy is governed by a specifiedScheduler.timeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item using a specifiedScheduler.timeout(long timeout, @NonNull TimeUnit unit, @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item.timeout(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator) Returns aFlowablethat mirrors the currentFlowable, but notifiesFlow.Subscribers of aTimeoutExceptionif an item emitted by the currentFlowabledoesn't arrive within a window of time after the emission of the previous item, where that period of time is measured by aFlow.Publisherthat is a function of the previous item.timeout(@NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator, @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowable, but that switches to a fallbackFlow.Publisherif an item emitted by the currentFlowabledoesn't arrive within a window of time after the emission of the previous item, where that period of time is measured by aPublisherthat is a function of the previous item.timeout(@NonNull Flow.Publisher<@NonNull U> firstTimeoutIndicator, @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator) Returns aFlowablethat mirrors the currentFlowable, but notifiesFlow.Subscribers of aTimeoutExceptionif either the first item emitted by the currentFlowableor any subsequent item doesn't arrive within time windows defined by otherFlow.Publishers.timeout(@NonNull Flow.Publisher<@NonNull U> firstTimeoutIndicator, @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator, @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowable, but switches to a fallbackFlow.Publisherif either the first item emitted by the currentFlowableor any subsequent item doesn't arrive within time windows defined by otherPublishers.Returns aFlowablethat emits0Lafter a specified delay, and then completes.Returns aFlowablethat emits0Lafter a specified delay, on a specifiedScheduler, and then completes.final <@NonNull R>
RCalls the specified converter function during assembly time and returns its resulting value.toFuture()Returns aFuturerepresenting the only value emitted by thisFlowable.toList()Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite upstream sourceFlow.Publisher.toList(int capacityHint) Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite sourceFlow.Publisher.Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite sourceFlow.Publisher.Returns aSinglethat emits a singleHashMapcontaining all items emitted by the finite sourceFlow.Publisher, mapped by the keys returned by a specifiedkeySelectorfunction.toMap(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Returns aSinglethat emits a singleHashMapcontaining values corresponding to items emitted by the finite sourceFlow.Publisher, mapped by the keys returned by a specifiedkeySelectorfunction.toMap(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull Supplier<? extends Map<@NonNull K, @NonNull V>> mapSupplier) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains keys and values extracted from the items emitted by the finite sourceFlow.Publisher.Returns aSinglethat emits a singleHashMapthat contains anArrayListof items emitted by the finite sourceFlow.Publisherkeyed by a specifiedkeySelectorfunction.toMultimap(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Returns aSinglethat emits a singleHashMapthat contains anArrayListof values extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisher, keyed by a specifiedkeySelectorfunction.toMultimap(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull Supplier<? extends Map<@NonNull K, Collection<@NonNull V>>> mapSupplier, @NonNull Function<? super @NonNull K, ? extends Collection<? super @NonNull V>> collectionFactory) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains a custom collection of values, extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisher, and keyed by thekeySelectorfunction.toMultimap(@NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull Supplier<Map<@NonNull K, Collection<@NonNull V>>> mapSupplier) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains anArrayListof values, extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisherand keyed by thekeySelectorfunction.final @NonNull Observable<T> Converts the currentFlowableinto a non-backpressuredObservable.Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order.toSortedList(int capacityHint) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order.toSortedList(@NonNull Comparator<? super @NonNull T> comparator) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order based on a specified comparison function.toSortedList(@NonNull Comparator<? super @NonNull T> comparator, int capacityHint) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order based on a specified comparison function.unsafeCreate(@NonNull Flow.Publisher<@NonNull T> onSubscribe) Create aFlowableby wrapping aFlow.Publisherwhich has to be implemented according to the Reactive Streams specification by handling backpressure and cancellation correctly; no safeguards are provided by theFlowableitself.unsubscribeOn(@NonNull Scheduler scheduler) Cancels the currentFlowableasynchronously by invokingFlow.Subscription.cancel()on the specifiedScheduler.using(@NonNull Supplier<? extends @NonNull D> resourceSupplier, @NonNull Function<? super @NonNull D, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> sourceSupplier, @NonNull Consumer<? super @NonNull D> resourceCleanup) Constructs aFlowablethat creates a dependent resource object, aFlow.Publisherwith that resource and calls the providedresourceDisposerfunction if this inner source terminates or the downstream cancels the flow.using(@NonNull Supplier<? extends @NonNull D> resourceSupplier, @NonNull Function<? super @NonNull D, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> sourceSupplier, @NonNull Consumer<? super @NonNull D> resourceCleanup, boolean eager) Constructs aFlowablethat creates a dependent resource object, aFlow.Publisherwith that resource and calls the providedresourceDisposerfunction if this inner source terminates or the downstream disposes the flow; doing it before these end-states have been reached ifeager == true, after otherwise.window(long count) Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(long count, long skip) Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(long count, long skip, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(long timespan, long timeskip, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, long count, boolean restart) Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(long timespan, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, long count, boolean restart, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(@NonNull Flow.Publisher<@NonNull B> boundaryIndicator) Returns aFlowablethat emits non-overlapping windows of items it collects from the currentFlowablewhere the boundary of each window is determined by the items emitted from a specified boundary-governingFlow.Publisher.window(@NonNull Flow.Publisher<@NonNull B> boundaryIndicator, int bufferSize) Returns aFlowablethat emits non-overlapping windows of items it collects from the currentFlowablewhere the boundary of each window is determined by the items emitted from a specified boundary-governingFlow.Publisher.window(@NonNull Flow.Publisher<@NonNull U> openingIndicator, @NonNull Function<? super @NonNull U, @NonNull ? extends Flow.Publisher<@NonNull V>> closingIndicator) Returns aFlowablethat emits windows of items it collects from the currentFlowable.window(@NonNull Flow.Publisher<@NonNull U> openingIndicator, @NonNull Function<? super @NonNull U, @NonNull ? extends Flow.Publisher<@NonNull V>> closingIndicator, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable.withLatestFrom(@NonNull Iterable<@NonNull ? extends Flow.Publisher<@NonNull ?>> others, @NonNull Function<? super Object[], @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers via a function to produce the output item.withLatestFrom(@NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner) Merges the specifiedFlow.Publisherinto the currentFlowablesequence by using theresultSelectorfunction only when the currentFlowable(this instance) emits an item.withLatestFrom(@NonNull Flow.Publisher<@NonNull ?>[] others, @NonNull Function<? super Object[], @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers via a function to produce the output item.withLatestFrom(@NonNull Flow.Publisher<@NonNull T1> source1, @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull Function3<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers via a function to produce the output item.withLatestFrom(@NonNull Flow.Publisher<@NonNull T1> source1, @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull Flow.Publisher<@NonNull T3> source3, @NonNull Function4<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers via a function to produce the output item.withLatestFrom(@NonNull Flow.Publisher<@NonNull T1> source1, @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull Flow.Publisher<@NonNull T3> source3, @NonNull Flow.Publisher<@NonNull T4> source4, @NonNull Function5<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers via a function to produce the output item.zip(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by anIterableof otherFlow.Publishers.zip(@NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull Function<? super Object[], ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by anIterableof otherFlow.Publishers.zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper, boolean delayError) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Function3<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of three items emitted, in sequence, by three otherFlow.Publishers.zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Function4<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of four items emitted, in sequence, by four otherFlow.Publishers.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull R>
@NonNull Flowable<R> zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Function5<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of five items emitted, in sequence, by five otherFlow.Publishers.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull R>
@NonNull Flowable<R> zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Function6<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of six items emitted, in sequence, by six otherFlow.Publishers.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull R>
@NonNull Flowable<R> zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Function7<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of seven items emitted, in sequence, by seven otherFlow.Publishers.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull R>
@NonNull Flowable<R> zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull Function8<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of eight items emitted, in sequence, by eight otherFlow.Publishers.static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull T9, @NonNull R>
@NonNull Flowable<R> zip(@NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull Flow.Publisher<? extends @NonNull T9> source9, @NonNull Function9<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? super @NonNull T9, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of nine items emitted, in sequence, by nine otherFlow.Publishers.zipArray(@NonNull Function<? super Object[], ? extends @NonNull R> zipper, boolean delayError, int bufferSize, @NonNull Flow.Publisher<? extends @NonNull T>... sources) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by an array of otherFlow.Publishers.zipWith(@NonNull Iterable<@NonNull U> other, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand a specifiedIterablesequence.zipWith(@NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.zipWith(@NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper, boolean delayError) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.zipWith(@NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.
-
Constructor Details
-
Flowable
public Flowable()
-
-
Method Details
-
amb
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> amb(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Mirrors the oneFlow.Publisherin anIterableof severalPublishers that first either emits an item or sends a termination notification.
When one of the
Publishers signal an item or terminates first, all subscriptions to the otherPublishers are canceled.- Backpressure:
- The operator itself doesn't interfere with backpressure which is determined by the winning
Publisher's backpressure behavior. - Scheduler:
ambdoes not operate by default on a particularScheduler.- Error handling:
-
If any of the losing
Publishers signals an error, the error is routed to the global error handler viaRxJavaPlugins.onError(Throwable).
- Type Parameters:
T- the common element type- Parameters:
sources- anIterableofPublishers sources competing to react first. A subscription to eachPublisherwill occur in the same order as in thisIterable.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
ambArray
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @SafeVarargs public static <@NonNull T> @NonNull Flowable<T> ambArray(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Mirrors the oneFlow.Publisherin an array of severalPublishers that first either emits an item or sends a termination notification.
When one of the
Publishers signal an item or terminates first, all subscriptions to the otherPublishers are canceled.- Backpressure:
- The operator itself doesn't interfere with backpressure which is determined by the winning
Publisher's backpressure behavior. - Scheduler:
ambArraydoes not operate by default on a particularScheduler.- Error handling:
-
If any of the losing
Publishers signals an error, the error is routed to the global error handler viaRxJavaPlugins.onError(Throwable).
- Type Parameters:
T- the common element type- Parameters:
sources- an array ofPublishersources competing to react first. A subscription to eachPublisherwill occur in the same order as in this array.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
bufferSize
Returns the default internal buffer size used by most async operators.The value can be overridden via system parameter
rx3.buffer-sizebefore theFlowableclass is loaded.- Returns:
- the default internal buffer size.
-
combineLatestArray
@SchedulerSupport("none") @CheckReturnValue @BackpressureSupport(FULL) @NonNull public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestArray(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestArraydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnull- See Also:
-
combineLatestArray
@SchedulerSupport("none") @CheckReturnValue @NonNull @BackpressureSupport(FULL) public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestArray(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestArraydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishersbufferSize- the internal buffer size and prefetch amount applied to every sourceFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
combineLatest
@SchedulerSupport("none") @CheckReturnValue @BackpressureSupport(FULL) @NonNull public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnull- See Also:
-
combineLatest
@SchedulerSupport("none") @CheckReturnValue @NonNull @BackpressureSupport(FULL) public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishersbufferSize- the internal buffer size and prefetch amount applied to every sourceFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
combineLatestArrayDelayError
@SchedulerSupport("none") @CheckReturnValue @BackpressureSupport(FULL) @NonNull public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestArrayDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestArrayDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnull- See Also:
-
combineLatestArrayDelayError
@SchedulerSupport("none") @CheckReturnValue @NonNull @BackpressureSupport(FULL) public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestArrayDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>[] sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided array of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestArrayDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishersbufferSize- the internal buffer size and prefetch amount applied to every sourceFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
combineLatestDelayError
@SchedulerSupport("none") @CheckReturnValue @BackpressureSupport(FULL) @NonNull public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnull- See Also:
-
combineLatestDelayError
@SchedulerSupport("none") @CheckReturnValue @BackpressureSupport(FULL) @NonNull public static <@NonNull T, @NonNull R> @NonNull Flowable<R> combineLatestDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> combiner, int bufferSize) Combines a collection of sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, where this aggregation is defined by a specified function and delays any error from the sources until all sourcePublishers 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 anObject[]instead. Unfortunately, aFunction<Integer[], R>passed to the method would trigger aClassCastException.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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
If the provided iterable of source
Publishers is empty, the resulting sequence completes immediately without emitting any items and without any calls to the combiner function.- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base type of source valuesR- the result type- Parameters:
sources- the collection of sourcePublisherscombiner- the aggregation function used to combine the items emitted by the sourcePublishersbufferSize- the internal buffer size and prefetch amount applied to every sourceFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorcombinerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
combineLatest
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T1, @NonNull T2, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> combiner) Combines two sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from either of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
T1- the element type of the first sourceT2- the element type of the second sourceR- the combined output type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Function3<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? extends @NonNull R> combiner) Combines three sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Function4<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? extends @NonNull R> combiner) Combines four sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Function5<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? extends @NonNull R> combiner) Combines five sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishersource5- the fifth sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Function6<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? extends @NonNull R> combiner) Combines six sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishersource5- the fifth sourcePublishersource6- the sixth sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Function7<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? extends @NonNull R> combiner) Combines seven sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishersource5- the fifth sourcePublishersource6- the sixth sourcePublishersource7- the seventh sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull @NonNull Function8<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? extends @NonNull R> combiner) Combines eight sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishersource5- the fifth sourcePublishersource6- the sixth sourcePublishersource7- the seventh sourcePublishersource8- the eighth sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7,source8orcombinerisnull- See Also:
-
combineLatest
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull T9, @NonNull R> @NonNull Flowable<R> combineLatest(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull @NonNull Flow.Publisher<? extends @NonNull T9> source9, @NonNull @NonNull Function9<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? super @NonNull T9, ? extends @NonNull R> combiner) Combines nine sourceFlow.Publishers by emitting an item that aggregates the latest values of each of the sourcePublishers each time an item is received from any of the sourcePublishers, 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 until that point). If that input source is also synchronous, other sources after it will not be subscribed to.
- Backpressure:
- The returned
Publisherhonors backpressure from downstream. The sourcePublishers are requested in a bounded manner, however, their backpressure is not enforced (the operator won't signalMissingBackpressureException) and may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
combineLatestdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- the second sourcePublishersource3- the third sourcePublishersource4- the fourth sourcePublishersource5- the fifth sourcePublishersource6- the sixth sourcePublishersource7- the seventh sourcePublishersource8- the eighth sourcePublishersource9- the ninth sourcePublishercombiner- the aggregation function used to combine the items emitted by the sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7,source8,source9orcombinerisnull- See Also:
-
concat
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates elements of eachFlow.Publisherprovided via anIterablesequence into a single sequence of elements without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common value type of the sources- Parameters:
sources- theIterablesequence ofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull
-
concat
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Returns aFlowablethat emits the items emitted by each of theFlow.Publishers emitted by the sourcePublisher, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishersources are expected to honor backpressure as well. If the outer violates this, aMissingBackpressureExceptionis signaled. If any of the innerPublishers violates this, it may throw anIllegalStateExceptionwhen an innerPublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
concat
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch) Returns aFlowablethat emits the items emitted by each of theFlow.Publishers emitted by the sourcePublisher, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishersources are expected to honor backpressure as well. If the outer violates this, aMissingBackpressureExceptionis signaled. If any of the innerPublishers violates this, it may throw anIllegalStateExceptionwhen an innerPublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishersprefetch- the number ofPublishers to prefetch from the sources sequence.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifprefetchis non-positive- See Also:
-
concat
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2) Returns aFlowablethat emits the items emitted by twoFlow.Publishers, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen that sourcePublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be concatenatedsource2- aPublisherto be concatenated- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1orsource2isnull- See Also:
-
concat
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3) Returns aFlowablethat emits the items emitted by threeFlow.Publishers, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen that sourcePublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be concatenatedsource2- aPublisherto be concatenatedsource3- aPublisherto be concatenated- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orsource3isnull- See Also:
-
concat
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concat(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source4) Returns aFlowablethat emits the items emitted by fourFlow.Publishers, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen that sourcePublishercompletes. - Scheduler:
concatdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be concatenatedsource2- aPublisherto be concatenatedsource3- aPublisherto be concatenatedsource4- aPublisherto be concatenated- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orsource4isnull- See Also:
-
concatArray
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> concatArray(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates a variable number ofFlow.Publishersources.Note: named this way because of overload conflict with
concat(Publisher<Publisher<T>>).
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen that sourcePublishercompletes. - Scheduler:
concatArraydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base value type- Parameters:
sources- the array of sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull
-
concatArrayDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> concatArrayDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates a variable number ofFlow.Publishersources and delays errors from any of them till all terminate.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, it may throw anIllegalStateExceptionwhen that sourcePublishercompletes. - Scheduler:
concatArrayDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common base value type- Parameters:
sources- the array of sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull
-
concatArrayEager
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> concatArrayEager(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, the operator will signal aMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- an array ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 2.0
-
concatArrayEager
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs public static <@NonNull T> @NonNull Flowable<T> concatArrayEager(int maxConcurrency, int prefetch, @NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, the operator will signal aMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
maxConcurrency- the maximum number of concurrent subscriptions at a time,Integer.MAX_VALUEis interpreted as an indication to subscribe to all sources at onceprefetch- the number of elements to prefetch from eachPublishersourcesources- an array ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.0
-
concatArrayEagerDelayError
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(FULL) @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> concatArrayEagerDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers 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 source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, the operator will signal aMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- an array ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 2.2.1 - experimental
-
concatArrayEagerDelayError
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(FULL) @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> concatArrayEagerDelayError(int maxConcurrency, int prefetch, @NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Concatenates an array ofFlow.Publishers 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 source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the sourcePublishers violate this, the operator will signal aMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
maxConcurrency- the maximum number of concurrent subscriptions at a time,Integer.MAX_VALUEis interpreted as indication to subscribe to all sources at onceprefetch- the number of elements to prefetch from eachPublishersourcesources- an array ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.2.1 - experimental
-
concatDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concatDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates theIterablesequence ofFlow.Publishers into a single sequence by subscribing to eachPublisher, one after the other, one at a time and delays any errors till the all innerPublishers terminate.- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishersources are expected to honor backpressure as well. If the outer violates this, aMissingBackpressureExceptionis signaled. If any of the innerPublishers violates this, it may throw anIllegalStateExceptionwhen an innerPublishercompletes. - Scheduler:
concatDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterablesequence ofPublishers- Returns:
- the new
Flowablewith the concatenating behavior - Throws:
NullPointerException- ifsourcesisnull
-
concatDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates theFlow.Publishersequence ofPublishers into a single sequence by subscribing to each innerPublisher, one after the other, one at a time and delays any errors till the all inner and the outerPublishers terminate.- Backpressure:
concatDelayErrorfully supports backpressure.- Scheduler:
concatDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- thePublishersequence ofPublishers- Returns:
- the new
Flowablewith the concatenating behavior - Throws:
NullPointerException- ifsourcesisnull
-
concatDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch, boolean tillTheEnd) Concatenates theFlow.Publishersequence ofPublishers into a single sequence by subscribing to each innerPublisher, one after the other, one at a time and delays any errors till the all inner and the outerPublishers terminate.- Backpressure:
concatDelayErrorfully supports backpressure.- Scheduler:
concatDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- thePublishersequence ofPublishersprefetch- the number of elements to prefetch from the outerPublishertillTheEnd- iftrue, exceptions from the outer and all innerPublishers are delayed to the end iffalse, exception from the outerPublisheris delayed till the current innerPublisherterminates- Returns:
- the new
Flowablewith the concatenating behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifprefetchisnull
-
concatEager
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates a sequence ofFlow.Publishers eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and the inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 2.0
-
concatEager
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates a sequence ofFlow.Publishers 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 source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenatedmaxConcurrency- the maximum number of concurrently running innerPublishers;Integer.MAX_VALUEis interpreted as all innerPublishers can be active at the same timeprefetch- the number of elements to prefetch from each innerPublishersource- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.0
-
concatEager
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the emitted source
Publishers as they are observed. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 2.0
-
concatEager
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates aFlow.Publishersequence ofPublishers 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
Publishers as they are observed. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenatedmaxConcurrency- the maximum number of concurrently running innerPublishers;Integer.MAX_VALUEis interpreted as all innerPublishers can be active at the same timeprefetch- the number of elements to prefetch from each innerPublishersource- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.0
-
concatEagerDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatEagerDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates a sequence ofFlow.Publishers 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 source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and the inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 3.0.0
-
concatEagerDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concatEagerDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates a sequence ofFlow.Publishers 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 source
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenatedmaxConcurrency- the maximum number of concurrently running innerPublishers;Integer.MAX_VALUEis interpreted as all innerPublishers can be active at the same timeprefetch- the number of elements to prefetch from each innerPublishersource- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 3.0.0
-
concatEagerDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> concatEagerDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values, delaying errors until all the inner and the outer sequences terminate.
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the emitted source
Publishers as they are observed. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnull- Since:
- 3.0.0
-
concatEagerDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> concatEagerDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int prefetch) Concatenates aFlow.Publishersequence ofPublishers eagerly into a single stream of values, delaying errors until all the inner and outer 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 emitted source
Publishers as they are observed. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream and both the outer and inner
Publishers are expected to support backpressure. Violating this assumption, the operator will signalMissingBackpressureException. - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
T- the value type- Parameters:
sources- a sequence ofPublishers that need to be eagerly concatenatedmaxConcurrency- the maximum number of concurrently running innerPublishers;Integer.MAX_VALUEis interpreted as all innerPublishers can be active at the same timeprefetch- the number of elements to prefetch from each innerPublishersource- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 3.0.0
-
create
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> create(@NonNull @NonNull FlowableOnSubscribe<@NonNull T> source, @NonNull @NonNull BackpressureStrategy mode) Provides an API (via a coldFlowable) that bridges the reactive world with the callback-style, generally non-backpressured world.Example:
Flowable.<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); }, BackpressureStrategy.BUFFER);Whenever a
Flow.Subscribersubscribes to the returnedFlowable, the providedFlowableOnSubscribecallback is invoked with a fresh instance of aFlowableEmitterthat will interact only with that specificSubscriber. If thisSubscribercancels the flow (makingFlowableEmitter.isCancelled()returntrue), other observers subscribed to the same returnedFlowableare not affected.You should call the
Emitter.onNext(Object),Emitter.onError(Throwable)andEmitter.onComplete()methods in a serialized fashion. The rest of its methods are thread-safe.- Backpressure:
- The backpressure behavior is determined by the
modeparameter. - Scheduler:
createdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type- Parameters:
source- the emitter that is called when aSubscribersubscribes to the returnedFlowablemode- the backpressure mode to apply if the downstreamSubscriberdoesn't request (fast) enough- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourceormodeisnull- See Also:
-
defer
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> defer(@NonNull @NonNull Supplier<? extends @NonNull Flow.Publisher<? extends @NonNull T>> supplier) Returns aFlowablethat calls aFlow.Publisherfactory to create aPublisherfor each newFlow.Subscriberthat subscribes. That is, for each subscriber, the actualPublisherthat subscriber observes is determined by the factory function.
The defer
Subscriberallows you to defer or delay emitting items from aPublisheruntil such time as aSubscribersubscribes to thePublisher. This allows aSubscriberto easily obtain updates or a refreshed version of the sequence.- Backpressure:
- The operator itself doesn't interfere with backpressure which is determined by the
Publisherreturned by thesupplier. - Scheduler:
deferdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of the items emitted by thePublisher- Parameters:
supplier- thePublisherfactory function to invoke for eachSubscriberthat subscribes to the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsupplierisnull- See Also:
-
empty
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> empty()Returns aFlowablethat emits no items to theFlow.Subscriberand immediately invokes itsonCompletemethod.
- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
emptydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of the items (ostensibly) emitted by theFlow.Publisher- Returns:
- the shared
Flowableinstance - See Also:
-
error
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> error(@NonNull @NonNull Supplier<? extends @NonNull Throwable> supplier) Returns aFlowablethat invokes aFlow.Subscriber'sonErrormethod when theSubscribersubscribes to it.
- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
errordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of the items (ostensibly) emitted by the resultingFlowable- Parameters:
supplier- aSupplierfactory to return aThrowablefor each individualSubscriber- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsupplierisnull- See Also:
-
error
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> error(@NonNull @NonNull Throwable throwable) Returns aFlowablethat invokes aFlow.Subscriber'sonErrormethod when theSubscribersubscribes to it.
- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
errordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of the items (ostensibly) emitted by the resultingFlowable- Parameters:
throwable- the particularThrowableto pass toonError- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifthrowableisnull- See Also:
-
fromAction
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(PASS_THROUGH) public static <@NonNull T> @NonNull Flowable<T> fromAction(@NonNull @NonNull Action action) Returns aFlowableinstance that runs the givenActionfor eachFlow.Subscriberand emits either its exception or simply completes.
- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
fromActiondoes not operate by default on a particularScheduler.- Error handling:
- If the
Actionthrows an exception, the respectiveThrowableis delivered to the downstream viaFlow.Subscriber.onError(Throwable), except when the downstream has canceled the resultingFlowablesource. In this latter case, theThrowableis delivered to the global error handler viaRxJavaPlugins.onError(Throwable)as anUndeliverableException.
- Type Parameters:
T- the target type- Parameters:
action- theActionto run for eachSubscriber- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifactionisnull- Since:
- 3.0.0
-
fromArray
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs public static <@NonNull T> @NonNull Flowable<T> fromArray(@NonNull @NonNull T... items) Converts an array into aFlow.Publisherthat emits the items in the array.
- Backpressure:
- The operator honors backpressure from downstream and iterates the given
arrayon demand (i.e., when requested). - Scheduler:
fromArraydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items in the array and the type of items to be emitted by the resultingFlowable- Parameters:
items- the array of elements- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemsisnull- See Also:
-
fromCallable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromCallable(@NonNull @NonNull Callable<? extends @NonNull T> callable) Returns aFlowablethat, when aFlow.Subscribersubscribes 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 a
Subscribersubscribes to theFlow.Publisher. That is to say, it makes the function "lazy."- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromCallabledoes not operate by default on a particularScheduler.- Error handling:
- If the
Callablethrows an exception, the respectiveThrowableis delivered to the downstream viaFlow.Subscriber.onError(Throwable), except when the downstream has canceled thisFlowablesource. In this latter case, theThrowableis delivered to the global error handler viaRxJavaPlugins.onError(Throwable)as anUndeliverableException.
- Type Parameters:
T- the type of the item emitted by thePublisher- Parameters:
callable- a function, the execution of which should be deferred;fromCallablewill invoke this function only when aSubscribersubscribes to thePublisherthatfromCallablereturns- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifcallableisnull- Since:
- 2.0
- See Also:
-
fromCompletable
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(PASS_THROUGH) public static <@NonNull T> @NonNull Flowable<T> fromCompletable(@NonNull @NonNull CompletableSource completableSource) Wraps aCompletableSourceinto aFlowable.
- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
fromCompletabledoes not operate by default on a particularScheduler.
- Type Parameters:
T- the target type- Parameters:
completableSource- theCompletableSourceto convert from- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifcompletableSourceisnull
-
fromFuture
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromFuture(@NonNull @NonNull Future<? extends @NonNull T> future) Converts aFutureinto aFlow.Publisher.
The operator calls
Future.get(), which is a blocking method, on the subscription thread. It is recommended applyingsubscribeOn(Scheduler)to move this blocking wait to a background thread, and if theSchedulersupports it, interrupt the wait when the flow is disposed.Also note that this operator will consume a
CompletionStage-basedFuturesubclass (such asCompletableFuture) in a blocking manner as well. Use thefromCompletionStage(CompletionStage)operator to convert and consume such sources in a non-blocking fashion instead.Unlike 1.x, canceling the
Flowablewon't cancel the future. If necessary, one can use composition to achieve the cancellation effect:futurePublisher.doOnCancel(() -> future.cancel(true));.- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromFuturedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of object that theFuturereturns, and also the type of item to be emitted by the resultingFlowable- Parameters:
future- the sourceFuture- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffutureisnull- See Also:
-
fromFuture
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromFuture(@NonNull @NonNull Future<? extends @NonNull T> future, long timeout, @NonNull @NonNull TimeUnit unit) Converts aFutureinto aFlow.Publisher, with a timeout on theFuture.
The operator calls
Future.get(long, TimeUnit), which is a blocking method, on the subscription thread. It is recommended applyingsubscribeOn(Scheduler)to move this blocking wait to a background thread, and if theSchedulersupports it, interrupt the wait when the flow is disposed.Unlike 1.x, canceling the
Flowablewon't cancel the future. If necessary, one can use composition to achieve the cancellation effect:futurePublisher.doOnCancel(() -> future.cancel(true));.Also note that this operator will consume a
CompletionStage-basedFuturesubclass (such asCompletableFuture) in a blocking manner as well. Use thefromCompletionStage(CompletionStage)operator to convert and consume such sources in a non-blocking fashion instead.- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromFuturedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of object that theFuturereturns, and also the type of item to be emitted by the resultingFlowable- Parameters:
future- the sourceFuturetimeout- the maximum time to wait before callinggetunit- theTimeUnitof thetimeoutargument- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffutureorunitisnull- See Also:
-
fromIterable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromIterable(@NonNull @NonNull Iterable<? extends @NonNull T> source) Converts anIterablesequence into aFlow.Publisherthat emits the items in the sequence.
- Backpressure:
- The operator honors backpressure from downstream and iterates the given
iterableon demand (i.e., when requested). - Scheduler:
fromIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items in theIterablesequence and the type of items to be emitted by the resultingFlowable- Parameters:
source- the sourceIterablesequence- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourceisnull- See Also:
-
fromMaybe
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public static <@NonNull T> @NonNull Flowable<T> fromMaybe(@NonNull @NonNull MaybeSource<@NonNull T> maybe) Returns aFlowableinstance that when subscribed to, subscribes to theMaybeSourceinstance and emitsonSuccessas a single item or forwards anyonCompleteoronErrorsignal.
- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromMaybedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the value type of theMaybeSourceelement- Parameters:
maybe- theMaybeSourceinstance to subscribe to, notnull- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmaybeisnull- Since:
- 3.0.0
-
fromObservable
@BackpressureSupport(SPECIAL) @CheckReturnValue @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> fromObservable(@NonNull @NonNull ObservableSource<@NonNull T> source, @NonNull @NonNull BackpressureStrategy strategy) Converts the givenObservableSourceinto aFlowableby 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
- Backpressure:
- The operator applies the chosen backpressure strategy of
BackpressureStrategyenum. - Scheduler:
fromObservabledoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of the source and resulting sequence- Parameters:
source- theObservableSourceto convertstrategy- the backpressure strategy to apply- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourceorstrategyisnull
-
fromPublisher
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromPublisher(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> publisher) Converts an arbitrary Reactive StreamsFlow.Publisherinto aFlowableif not already aFlowable.The
Publishermust follow the Reactive-Streams specification. Violating the specification may result in undefined behavior.If possible, use
create(FlowableOnSubscribe, BackpressureStrategy)to create a source-likeFlowableinstead.Note that even though
Publisherappears 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.- Backpressure:
- The operator is a pass-through for backpressure and its behavior is determined by the backpressure behavior of the wrapped publisher.
- Scheduler:
fromPublisherdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the value type of the flow- Parameters:
publisher- thePublisherto convert- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpublisherisnull- See Also:
-
fromRunnable
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(PASS_THROUGH) public static <@NonNull T> @NonNull Flowable<T> fromRunnable(@NonNull @NonNull Runnable run) Returns aFlowableinstance that runs the givenRunnablefor eachFlow.Subscriberand emits either its unchecked exception or simply completes.
If the code to be wrapped needs to throw a checked or more broader
Throwableexception, that exception has to be converted to an unchecked exception by the wrapped code itself. Alternatively, use thefromAction(Action)method which allows the wrapped code to throw anyThrowableexception and will signal it to observers as-is.- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
fromRunnabledoes not operate by default on a particularScheduler.- Error handling:
- If the
Runnablethrows an exception, the respectiveThrowableis delivered to the downstream viaFlow.Subscriber.onError(Throwable), except when the downstream has canceled the resultingFlowablesource. In this latter case, theThrowableis delivered to the global error handler viaRxJavaPlugins.onError(Throwable)as anUndeliverableException.
- Type Parameters:
T- the target type- Parameters:
run- theRunnableto run for eachSubscriber- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifrunisnull- Since:
- 3.0.0
- See Also:
-
fromSingle
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public static <@NonNull T> @NonNull Flowable<T> fromSingle(@NonNull @NonNull SingleSource<@NonNull T> source) Returns aFlowableinstance that when subscribed to, subscribes to theSingleSourceinstance and emitsonSuccessas a single item or forwards theonErrorsignal.
- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromSingledoes not operate by default on a particularScheduler.
- Type Parameters:
T- the value type of theSingleSourceelement- Parameters:
source- theSingleSourceinstance to subscribe to, notnull- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourceisnull- Since:
- 3.0.0
-
fromSupplier
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> fromSupplier(@NonNull @NonNull Supplier<? extends @NonNull T> supplier) Returns aFlowablethat, when aFlow.Subscribersubscribes 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 a
Subscribersubscribes to theFlow.Publisher. That is to say, it makes the function "lazy."- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
fromSupplierdoes not operate by default on a particularScheduler.- Error handling:
- If the
Supplierthrows an exception, the respectiveThrowableis delivered to the downstream viaFlow.Subscriber.onError(Throwable), except when the downstream has canceled thisFlowablesource. In this latter case, theThrowableis delivered to the global error handler viaRxJavaPlugins.onError(Throwable)as anUndeliverableException.
- Type Parameters:
T- the type of the item emitted by thePublisher- Parameters:
supplier- a function, the execution of which should be deferred;fromSupplierwill invoke this function only when aSubscribersubscribes to thePublisherthatfromSupplierreturns- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsupplierisnull- Since:
- 3.0.0
- See Also:
-
generate
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> generate(@NonNull @NonNull Consumer<@NonNull Emitter<@NonNull T>> generator) Returns a cold, synchronous, stateless and backpressure-aware generator of values.Note that the
Emitter.onNext(T),Emitter.onError(Throwable)andEmitter.onComplete()methods provided to the function via theEmitterinstance 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.- Backpressure:
- The operator honors downstream backpressure.
- Scheduler:
generatedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the generated value type- Parameters:
generator- theConsumercalled whenever a particular downstreamFlow.Subscriberhas requested a value. The callback then should callonNext,onErrororonCompleteto signal a value or a terminal event. Signaling multipleonNextin a call will make the operator signalIllegalStateException.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifgeneratorisnull
-
generate
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T, @NonNull S> @NonNull Flowable<T> generate(@NonNull @NonNull Supplier<@NonNull S> initialState, @NonNull @NonNull BiConsumer<@NonNull S, Emitter<@NonNull T>> generator) Returns a cold, synchronous, stateful and backpressure-aware generator of values.Note that the
Emitter.onNext(T),Emitter.onError(Throwable)andEmitter.onComplete()methods provided to the function via theEmitterinstance 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.- Backpressure:
- The operator honors downstream backpressure.
- Scheduler:
generatedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the generated value typeS- the type of the per-Flow.Subscriberstate- Parameters:
initialState- theSupplierto generate the initial state for eachSubscribergenerator- theConsumercalled with the current state whenever a particular downstreamSubscriberhas requested a value. The callback then should callonNext,onErrororonCompleteto signal a value or a terminal event. Signaling multipleonNextin a call will make the operator signalIllegalStateException.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifinitialStateorgeneratorisnull
-
generate
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T, @NonNull S> @NonNull Flowable<T> generate(@NonNull @NonNull Supplier<@NonNull S> initialState, @NonNull @NonNull BiConsumer<@NonNull S, Emitter<@NonNull T>> generator, @NonNull @NonNull Consumer<? super @NonNull S> disposeState) Returns a cold, synchronous, stateful and backpressure-aware generator of values.Note that the
Emitter.onNext(T),Emitter.onError(Throwable)andEmitter.onComplete()methods provided to the function via theEmitterinstance 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.- Backpressure:
- The operator honors downstream backpressure.
- Scheduler:
generatedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the generated value typeS- the type of the per-Flow.Subscriberstate- Parameters:
initialState- theSupplierto generate the initial state for eachSubscribergenerator- theConsumercalled with the current state whenever a particular downstreamSubscriberhas requested a value. The callback then should callonNext,onErrororonCompleteto signal a value or a terminal event. Signaling multipleonNextin a call will make the operator signalIllegalStateException.disposeState- theConsumerthat is called with the current state when the generator terminates the sequence or it gets canceled- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifinitialState,generatorordisposeStateisnull
-
generate
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T, @NonNull S> @NonNull Flowable<T> generate(@NonNull @NonNull Supplier<@NonNull S> initialState, @NonNull @NonNull BiFunction<@NonNull S, @NonNull Emitter<@NonNull T>, @NonNull S> generator) Returns a cold, synchronous, stateful and backpressure-aware generator of values.Note that the
Emitter.onNext(T),Emitter.onError(Throwable)andEmitter.onComplete()methods provided to the function via theEmitterinstance 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.- Backpressure:
- The operator honors downstream backpressure.
- Scheduler:
generatedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the generated value typeS- the type of the per-Flow.Subscriberstate- Parameters:
initialState- theSupplierto generate the initial state for eachSubscribergenerator- theFunctioncalled with the current state whenever a particular downstreamSubscriberhas requested a value. The callback then should callonNext,onErrororonCompleteto signal a value or a terminal event and should return a (new) state for the next invocation. Signaling multipleonNextin a call will make the operator signalIllegalStateException.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifinitialStateorgeneratorisnull
-
generate
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T, @NonNull S> @NonNull Flowable<T> generate(@NonNull @NonNull Supplier<@NonNull S> initialState, @NonNull @NonNull BiFunction<@NonNull S, @NonNull Emitter<@NonNull T>, @NonNull S> generator, @NonNull @NonNull Consumer<? super @NonNull S> disposeState) Returns a cold, synchronous, stateful and backpressure-aware generator of values.Note that the
Emitter.onNext(T),Emitter.onError(Throwable)andEmitter.onComplete()methods provided to the function via theEmitterinstance 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.- Backpressure:
- The operator honors downstream backpressure.
- Scheduler:
generatedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the generated value typeS- the type of the per-Flow.Subscriberstate- Parameters:
initialState- theSupplierto generate the initial state for eachSubscribergenerator- theFunctioncalled with the current state whenever a particular downstreamSubscriberhas requested a value. The callback then should callonNext,onErrororonCompleteto signal a value or a terminal event and should return a (new) state for the next invocation. Signaling multipleonNextin a call will make the operator signalIllegalStateException.disposeState- theConsumerthat is called with the current state when the generator terminates the sequence or it gets canceled- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifinitialState,generatorordisposeStateisnull
-
interval
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public static @NonNull Flowable<Long> interval(long initialDelay, long period, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits a0Lafter theinitialDelayand ever-increasing numbers after eachperiodof time thereafter.
- Backpressure:
- The operator generates values based on time and ignores downstream backpressure which
may lead to
MissingBackpressureExceptionat some point in the chain. Downstream consumers should consider applying one of theonBackpressureXXXoperators as well. - Scheduler:
intervaloperates by default on thecomputationScheduler.
- Parameters:
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 bothinitialDelayandperiod- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- Since:
- 1.0.12
- See Also:
-
interval
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public static @NonNull Flowable<Long> interval(long initialDelay, long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits a0Lafter theinitialDelayand ever-increasing numbers after eachperiodof time thereafter, on a specifiedScheduler.
- Backpressure:
- The operator generates values based on time and ignores downstream backpressure which
may lead to
MissingBackpressureExceptionat some point in the chain. Downstream consumers should consider applying one of theonBackpressureXXXoperators as well. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 bothinitialDelayandperiodscheduler- theScheduleron which the waiting happens and items are emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- Since:
- 1.0.12
- See Also:
-
interval
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public static @NonNull Flowable<Long> interval(long period, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits a sequential number every specified interval of time.
- Backpressure:
- The operator signals a
MissingBackpressureExceptionif the downstream is not ready to receive the next value. - Scheduler:
intervaloperates by default on thecomputationScheduler.
- Parameters:
period- the period size in time units (see below)unit- time units to use for the interval size- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
interval
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public static @NonNull Flowable<Long> interval(long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits a sequential number every specified interval of time, on a specifiedScheduler.
- Backpressure:
- The operator generates values based on time and ignores downstream backpressure which
may lead to
MissingBackpressureExceptionat some point in the chain. Downstream consumers should consider applying one of theonBackpressureXXXoperators as well. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
period- the period size in time units (see below)unit- time units to use for the interval sizescheduler- theSchedulerto use for scheduling the items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
intervalRange
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") public static @NonNull Flowable<Long> intervalRange(long start, long count, long initialDelay, long period, @NonNull @NonNull TimeUnit unit) Signals a range of long values, the first after some initial delay and the rest periodically after.The sequence completes immediately after the last value
(start + count - 1)has been reached.- Backpressure:
- The operator signals a
MissingBackpressureExceptionif the downstream can't keep up. - Scheduler:
intervalRangeby default operates on thecomputationScheduler.
- Parameters:
start- that start value of the rangecount- the number of values to emit in total, if zero, the operator emits anonCompleteafter 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 theinitialDelayandperiodamounts- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifcountis less than zero, or ifstart+count− 1 exceedsLong.MAX_VALUE- See Also:
-
intervalRange
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public static @NonNull Flowable<Long> intervalRange(long start, long count, long initialDelay, long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Signals a range of long values, the first after some initial delay and the rest periodically after.The sequence completes immediately after the last value (start + count - 1) has been reached.
- Backpressure:
- The operator signals a
MissingBackpressureExceptionif the downstream can't keep up. - Scheduler:
- you provide the
Scheduler.
- Parameters:
start- that start value of the rangecount- the number of values to emit in total, if zero, the operator emits anonCompleteafter 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 theinitialDelayandperiodamountsscheduler- the targetSchedulerwhere the values and terminal signals will be emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis less than zero, or ifstart+count− 1 exceedsLong.MAX_VALUE
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item) Returns aFlowablethat 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. UsefromCallable(Callable)to generate a single item on demand (whenFlow.Subscribers subscribe to it).See the multi-parameter overloads of
justto emit more than one (constant reference) items one after the other. UsefromArray(Object...)to emit an arbitrary number of items that are known upfront.To emit the items of an
Iterablesequence (such as aList), usefromIterable(Iterable).- Backpressure:
- The operator honors backpressure from downstream.
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of that item- Parameters:
item- the item to emit- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemisnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2) Converts two items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1oritem2isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3) Converts three items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2oritem3isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4) Converts four items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3, oritem4isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5) Converts five items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4oritem5isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6) Converts six items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth itemitem6- sixth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4,item5oritem6isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> just(@NonNull T item1, @NonNull T item2, @NonNull T item3, @NonNull T item4, @NonNull T item5, @NonNull T item6, @NonNull T item7) Converts seven items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth itemitem6- sixth itemitem7- seventh item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4,item5,item6oritem7isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<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) Converts eight items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth itemitem6- sixth itemitem7- seventh itemitem8- eighth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4,item5,item6,item7oritem8isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<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) Converts nine items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth itemitem6- sixth itemitem7- seventh itemitem8- eighth itemitem9- ninth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4,item5,item6,item7,item8oritem9isnull- See Also:
-
just
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<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) Converts ten items into aFlow.Publisherthat emits those items.
- Backpressure:
- The operator honors backpressure from downstream and signals each value on-demand (i.e., when requested).
- Scheduler:
justdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of these items- Parameters:
item1- first itemitem2- second itemitem3- third itemitem4- fourth itemitem5- fifth itemitem6- sixth itemitem7- seventh itemitem8- eighth itemitem9- ninth itemitem10- tenth item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitem1,item2,item3,item4,item5,item6,item7,item8,item9, oritem10isnull- See Also:
-
merge
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int bufferSize) Flattens anIterableofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Iterable, int, int)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of items to prefetch from each innerPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- See Also:
-
mergeArray
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeArray(int maxConcurrency, int bufferSize, @NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeArraydoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeArrayDelayError(int, int, Publisher[])to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
maxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of items to prefetch from each innerPublishersources- the array ofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- See Also:
-
merge
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens anIterableofFlow.Publishers into onePublisher, without any transformation.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Iterable)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
merge
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens anIterableofFlow.Publishers into onePublisher, without any transformation, while limiting the number of concurrent subscriptions to thesePublishers.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Iterable, int)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyis less than or equal to 0- See Also:
-
merge
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens aFlow.Publisherthat emitsPublishers into a singlePublisherthat emits the items emitted by thosPublishers , without any transformation.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in unbounded mode (i.e., no backpressure is applied to it). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Publisher)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
merge
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens aFlow.Publisherthat emitsPublishers into a singlePublisherthat emits the items emitted by thosePublishers, without any transformation, while limiting the maximum number of concurrent subscriptions to thesePublishers.
You can combine the items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Publisher, int)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyis less than or equal to 0- Since:
- 1.1.0
- See Also:
-
mergeArray
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeArray(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, without any transformation.
You can combine items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeArraydoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeArrayDelayError(Publisher...)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
sources- the array ofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
merge
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2) Flattens twoFlow.Publishers into a singlePublisher, without any transformation.
You can combine items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Publisher, Publisher)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1orsource2isnull- See Also:
-
merge
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3) Flattens threeFlow.Publishers into a singlePublisher, without any transformation.
You can combine items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Publisher, Publisher, Publisher)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be mergedsource3- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orsource3isnull- See Also:
-
merge
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> merge(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source4) Flattens fourFlow.Publishers into a singlePublisher, without any transformation.
You can combine items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergemethod.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergedoes not operate by default on a particularScheduler.- Error handling:
- If any of the source
Publishers signal aThrowableviaonError, the resultingFlowableterminates with thatThrowableand all other sourcePublishers are canceled. If more than onePublishersignals an error, the resultingFlowablemay terminate with the first one's error or, depending on the concurrency of the sources, may terminate with aCompositeExceptioncontaining two or more of the various error signals.Throwables that didn't make into the composite will be sent (individually) to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors. Similarly,Throwables signaled by source(s) after the returnedFlowablehas been canceled or terminated with a (composite) error will be sent to the same global error handler. UsemergeDelayError(Publisher, Publisher, Publisher, Publisher)to merge sources and terminate only when all sourcePublishers have completed or failed with an error.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be mergedsource3- aPublisherto be mergedsource4- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orsource4isnull- See Also:
-
mergeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. All inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
mergeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency, int bufferSize) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. All inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of items to prefetch from each innerPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- See Also:
-
mergeArrayDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeArrayDelayError(int maxConcurrency, int bufferSize, @NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. All source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeArrayDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
maxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of items to prefetch from each innerPublishersources- the array ofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- See Also:
-
mergeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens anIterableofFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. All inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- theIterableofPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- See Also:
-
mergeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Flattens aFlow.Publisherthat emitsPublishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in unbounded mode (i.e., no backpressure is applied to it). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
mergeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int maxConcurrency) Flattens aFlow.Publisherthat emitsPublishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them, while limiting the number of concurrent subscriptions to thesePublishers.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- aPublisherthat emitsPublishersmaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
mergeArrayDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public static <@NonNull T> @NonNull Flowable<T> mergeArrayDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Flattens an array ofFlow.Publishers into oneFlowable, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. Both the outer and inner
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeArrayDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
sources- the array ofPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
mergeDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2) Flattens twoFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from each of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher, Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if both merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1orsource2isnull- See Also:
-
mergeDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3) Flattens threeFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher, Publisher, Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be mergedsource3- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orsource3isnull- See Also:
-
mergeDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source4) Flattens fourFlow.Publishers into onePublisher, in a way that allows aFlow.Subscriberto receive all successfully emitted items from all of the sourcePublishers without being interrupted by an error notification from one of them.This behaves like
merge(Publisher, Publisher, Publisher, Publisher)except that if any of the mergedPublishers notify of an error viaonError,mergeDelayErrorwill refrain from propagating that error notification until all of the mergedPublishers have finished emitting items.
Even if multiple merged
Publishers sendonErrornotifications,mergeDelayErrorwill only invoke theonErrormethod of itsSubscribers once.- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element base type- Parameters:
source1- aPublisherto be mergedsource2- aPublisherto be mergedsource3- aPublisherto be mergedsource4- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orsource4isnull- See Also:
-
never
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> never()Returns aFlowablethat never sends any items or notifications to aFlow.Subscriber.
This
Flow.Publisheris useful primarily for testing purposes.- Backpressure:
- This source doesn't produce any elements and effectively ignores downstream backpressure.
- Scheduler:
neverdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items (not) emitted by thePublisher- Returns:
- the shared
Flowableinstance - See Also:
-
range
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static @NonNull Flowable<Integer> range(int start, int count) Returns aFlowablethat emits a sequence ofIntegers within a specified range.
- Backpressure:
- The operator honors backpressure from downstream and signals values on-demand (i.e., when requested).
- Scheduler:
rangedoes not operate by default on a particularScheduler.
- Parameters:
start- the value of the firstIntegerin the sequencecount- the number of sequentialIntegers to generate- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis less than zero, or ifstart+count− 1 exceedsInteger.MAX_VALUE- See Also:
-
rangeLong
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static @NonNull Flowable<Long> rangeLong(long start, long count) Returns aFlowablethat emits a sequence ofLongs within a specified range.
- Backpressure:
- The operator honors backpressure from downstream and signals values on-demand (i.e., when requested).
- Scheduler:
rangeLongdoes not operate by default on a particularScheduler.
- Parameters:
start- the value of the firstLongin the sequencecount- the number of sequentialLongs to generate- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis less than zero, or ifstart+count− 1 exceedsLong.MAX_VALUE- See Also:
-
sequenceEqual
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise.
- Backpressure:
- This operator honors downstream backpressure and expects both of its sources
to honor backpressure as well. If violated, the operator will emit a
MissingBackpressureException. - Scheduler:
sequenceEqualdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items emitted by eachPublisher- Parameters:
source1- the firstPublisherto comparesource2- the secondPublisherto compare- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifsource1orsource2isnull- See Also:
-
sequenceEqual
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> isEqual) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise based on the results of a specified equality function.
- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator signals aMissingBackpressureException. - Scheduler:
sequenceEqualdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items emitted by eachPublisher- Parameters:
source1- the firstPublisherto comparesource2- the secondPublisherto compareisEqual- a function used to compare items emitted by eachPublisher- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifsource1,source2orisEqualisnull- See Also:
-
sequenceEqual
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, @NonNull @NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> isEqual, int bufferSize) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise based on the results of a specified equality function.
- Backpressure:
- The operator honors backpressure from downstream. The source
Publishers are expected to honor backpressure; if violated, the operator signals aMissingBackpressureException. - Scheduler:
sequenceEqualdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items emitted by eachPublisher- Parameters:
source1- the firstPublisherto comparesource2- the secondPublisherto compareisEqual- a function used to compare items emitted by eachPublisherbufferSize- the number of items to prefetch from the first and second sourcePublisher- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifsource1,source2orisEqualisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
sequenceEqual
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> source2, int bufferSize) Returns aSinglethat emits aBooleanvalue that indicates whether twoFlow.Publishersequences are the same by comparing the items emitted by eachPublisherpairwise.
- Backpressure:
- This operator honors downstream backpressure and expects both of its sources
to honor backpressure as well. If violated, the operator will emit a
MissingBackpressureException. - Scheduler:
sequenceEqualdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the type of items emitted by eachPublisher- Parameters:
source1- the firstPublisherto comparesource2- the secondPublisherto comparebufferSize- the number of items to prefetch from the first and second sourcePublisher- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifsource1orsource2isnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
switchOnNext
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> switchOnNext(@NonNull @NonNull Flow.Publisher<? extends Flow.Publisher<? extends @NonNull T>> sources, int bufferSize) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers.
switchOnNextsubscribes to aPublisherthat emitsPublishers. Each time it observes one of these emittedPublishers, thePublisherreturned byswitchOnNextbegins emitting the items emitted by thatPublisher. When a newPublisheris emitted,switchOnNextstops emitting items from the earlier-emittedPublisherand begins emitting items from the new one.The resulting
Flowablecompletes if both the outerPublisherand the last innerPublisher, if any, complete. If the outerPublishersignals anonError, the innerPublisheris canceled and the error delivered in-sequence.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchOnNextdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the item type- Parameters:
sources- the sourcePublisherthat emitsPublishersbufferSize- the number of items to prefetch from the innerPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
switchOnNext
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> switchOnNext(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers.
switchOnNextsubscribes to aPublisherthat emitsPublishers. Each time it observes one of these emittedPublishers, thePublisherreturned byswitchOnNextbegins emitting the items emitted by thatPublisher. When a newPublisheris emitted,switchOnNextstops emitting items from the earlier-emittedPublisherand begins emitting items from the new one.The resulting
Flowablecompletes if both the outerPublisherand the last innerPublisher, if any, complete. If the outerPublishersignals anonError, the innerPublisheris canceled and the error delivered in-sequence.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchOnNextdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the item type- Parameters:
sources- the sourcePublisherthat emitsPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- See Also:
-
switchOnNextDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> switchOnNextDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers and delays any exception until allPublishers terminate.
switchOnNextsubscribes to aPublisherthat emitsPublishers. Each time it observes one of these emittedPublishers, thePublisherreturned byswitchOnNextbegins emitting the items emitted by thatPublisher. When a newPublisheris emitted,switchOnNextstops emitting items from the earlier-emittedPublisherand begins emitting items from the new one.The resulting
Flowablecompletes if both the mainPublisherand the last innerPublisher, if any, complete. If the mainPublishersignals anonError, the termination of the last innerPublisherwill emit that error as is or wrapped into aCompositeExceptionalong with the other possible errors the former innerPublishers signaled.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchOnNextDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the item type- Parameters:
sources- the sourcePublisherthat emitsPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnull- Since:
- 2.0
- See Also:
-
switchOnNextDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<T> switchOnNextDelayError(@NonNull @NonNull Flow.Publisher<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, int prefetch) Converts aFlow.Publisherthat emitsPublishers into aPublisherthat emits the items emitted by the most recently emitted of thosePublishers and delays any exception until allPublishers terminate.
switchOnNextsubscribes to aPublisherthat emitsPublishers. Each time it observes one of these emittedPublishers, thePublisherreturned byswitchOnNextbegins emitting the items emitted by thatPublisher. When a newPublisheris emitted,switchOnNextstops emitting items from the earlier-emittedPublisherand begins emitting items from the new one.The resulting
Flowablecompletes if both the mainPublisherand the last innerPublisher, if any, complete. If the mainPublishersignals anonError, the termination of the last innerPublisherwill emit that error as is or wrapped into aCompositeExceptionalong with the other possible errors the former innerPublishers signaled.- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchOnNextDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
T- the item type- Parameters:
sources- the sourcePublisherthat emitsPublishersprefetch- the number of items to prefetch from the innerPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.0
- See Also:
-
timer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public static @NonNull Flowable<Long> timer(long delay, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits0Lafter a specified delay, and then completes.
- Backpressure:
- This operator does not support backpressure as it uses time. If the downstream needs a slower rate
it should slow the timer or use something like
onBackpressureDrop(). - Scheduler:
timeroperates by default on thecomputationScheduler.
- Parameters:
delay- the initial delay before emitting a single0Lunit- time units to use fordelay- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
timer
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public static @NonNull Flowable<Long> timer(long delay, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits0Lafter a specified delay, on a specifiedScheduler, and then completes.
- Backpressure:
- This operator does not support backpressure as it uses time. If the downstream needs a slower rate
it should slow the timer or use something like
onBackpressureDrop(). - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
delay- the initial delay before emitting a single 0Lunit- time units to use fordelayscheduler- theSchedulerto use for scheduling the item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
unsafeCreate
@CheckReturnValue @NonNull @BackpressureSupport(NONE) @SchedulerSupport("none") public static <@NonNull T> @NonNull Flowable<T> unsafeCreate(@NonNull @NonNull Flow.Publisher<@NonNull T> onSubscribe) Create aFlowableby wrapping aFlow.Publisherwhich has to be implemented according to the Reactive Streams specification by handling backpressure and cancellation correctly; no safeguards are provided by theFlowableitself.- Backpressure:
- This operator is a pass-through for backpressure and the behavior is determined by the
provided
Publisherimplementation. - Scheduler:
unsafeCreateby default doesn't operate on any particularScheduler.
- Type Parameters:
T- the value type emitted- Parameters:
onSubscribe- thePublisherinstance to wrap- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonSubscribeisnullIllegalArgumentException- ifonSubscribeis a subclass ofFlowable; such instances don't need conversion and is possibly a port remnant from 1.x or one should usehide()instead.
-
using
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public static <@NonNull T, @NonNull D> @NonNull Flowable<T> using(@NonNull @NonNull Supplier<? extends @NonNull D> resourceSupplier, @NonNull @NonNull Function<? super @NonNull D, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> sourceSupplier, @NonNull @NonNull Consumer<? super @NonNull D> resourceCleanup) Constructs aFlowablethat creates a dependent resource object, aFlow.Publisherwith that resource and calls the providedresourceDisposerfunction if this inner source terminates or the downstream cancels the flow.
- Backpressure:
- The operator is a pass-through for backpressure and otherwise depends on the
backpressure support of the
Publisherreturned by theresourceFactory. - Scheduler:
usingdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of the generatedPublisherD- the type of the resource associated with the output sequence- Parameters:
resourceSupplier- the factory function to create a resource object that depends on thePublishersourceSupplier- the factory function to create aPublisherresourceCleanup- the function that will dispose of the resource- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifresourceSupplier,sourceSupplierorresourceCleanupisnull- See Also:
-
using
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public static <@NonNull T, @NonNull D> @NonNull Flowable<T> using(@NonNull @NonNull Supplier<? extends @NonNull D> resourceSupplier, @NonNull @NonNull Function<? super @NonNull D, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> sourceSupplier, @NonNull @NonNull Consumer<? super @NonNull D> resourceCleanup, boolean eager) Constructs aFlowablethat creates a dependent resource object, aFlow.Publisherwith that resource and calls the providedresourceDisposerfunction if this inner source terminates or the downstream disposes the flow; doing it before these end-states have been reached ifeager == true, after otherwise.
- Backpressure:
- The operator is a pass-through for backpressure and otherwise depends on the
backpressure support of the
Publisherreturned by theresourceFactory. - Scheduler:
usingdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of the generatedPublisherD- the type of the resource associated with the output sequence- Parameters:
resourceSupplier- the factory function to create a resource object that depends on thePublishersourceSupplier- the factory function to create aPublisherresourceCleanup- the function that will dispose of the resourceeager- Iftrue, the resource disposal will happen either on acancel()call before the upstream is disposed or just before the emission of a terminal event (onCompleteoronError). Iffalsethe resource disposal will happen either on acancel()call after the upstream is disposed or just after the emission of a terminal event (onCompleteoronError).- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifresourceSupplier,sourceSupplierorresourceCleanupisnull- Since:
- 2.0
- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by anIterableof otherFlow.Publishers.zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each of the sourcePublishers; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(Arrays.asList(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)), (a) -> a)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common value typeR- the zipped result type- Parameters:
sources- anIterableof sourcePublisherszipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<? extends @NonNull T>> sources, @NonNull @NonNull Function<? super Object[], ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by anIterableof otherFlow.Publishers.zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each of the sourcePublishers; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers; and so forth.The resulting
Floawblereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(Arrays.asList(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)), (a) -> a)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common source value typeR- the zipped result type- Parameters:
sources- anIterableof sourcePublisherszipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowabledelayError- delay errors signaled by any of the sourcePublisheruntil allPublishers terminatebufferSize- the number of elements to prefetch from each sourcePublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorzipperisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1and the first item emitted byo2; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted byo1and the second item emitted byo2; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
T1- the value type of the first sourceT2- the value type of the second sourceR- the zipped result type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper, boolean delayError) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1and the first item emitted byo2; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted byo1and the second item emitted byo2; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
T1- the value type of the first sourceT2- the value type of the second sourceR- the zipped result type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowabledelayError- delay errors from any of the sourcePublishers till the other terminates- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull BiFunction<? super @NonNull T1, ? super @NonNull T2, ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of two items emitted, in sequence, by two otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1and the first item emitted byo2; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted byo1and the second item emitted byo2; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
T1- the value type of the first sourceT2- the value type of the second sourceR- the zipped result type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowabledelayError- delay errors from any of the sourcePublishers till the other terminatesbufferSize- the number of elements to prefetch from each sourcePublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orzipperisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Function3<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of three items emitted, in sequence, by three otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1, the first item emitted byo2, and the first item emitted byo3; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted byo1, the second item emitted byo2, and the second item emitted byo3; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Function4<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of four items emitted, in sequence, by four otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1, the first item emitted byo2, the first item emitted byo3, and the first item emitted by04; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Function5<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of five items emitted, in sequence, by five otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted byo1, the first item emitted byo2, the first item emitted byo3, the first item emitted byo4, and the first item emitted byo5; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublishersource5- a fifth sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Function6<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of six items emitted, in sequence, by six otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each sourcePublisher, the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers, and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublishersource5- a fifth sourcePublishersource6- a sixth sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Function7<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of seven items emitted, in sequence, by seven otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each sourcePublisher, the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers, and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2), ..., (a, b, c, d, e, f, g) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublishersource5- a fifth sourcePublishersource6- a sixth sourcePublishersource7- a seventh sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull @NonNull Function8<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of eight items emitted, in sequence, by eight otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each sourcePublisher, the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers, and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel 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)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublishersource5- a fifth sourcePublishersource6- a sixth sourcePublishersource7- a seventh sourcePublishersource8- an eighth sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7,source8orzipperisnull- See Also:
-
zip
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public static <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull T9, @NonNull R> @NonNull Flowable<R> zip(@NonNull @NonNull Flow.Publisher<? extends @NonNull T1> source1, @NonNull @NonNull Flow.Publisher<? extends @NonNull T2> source2, @NonNull @NonNull Flow.Publisher<? extends @NonNull T3> source3, @NonNull @NonNull Flow.Publisher<? extends @NonNull T4> source4, @NonNull @NonNull Flow.Publisher<? extends @NonNull T5> source5, @NonNull @NonNull Flow.Publisher<? extends @NonNull T6> source6, @NonNull @NonNull Flow.Publisher<? extends @NonNull T7> source7, @NonNull @NonNull Flow.Publisher<? extends @NonNull T8> source8, @NonNull @NonNull Flow.Publisher<? extends @NonNull T9> source9, @NonNull @NonNull Function9<? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, ? super @NonNull T5, ? super @NonNull T6, ? super @NonNull T7, ? super @NonNull T8, ? super @NonNull T9, ? extends @NonNull R> zipper) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of nine items emitted, in sequence, by nine otherFlow.Publishers.
zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each sourcePublisher, the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers, and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel 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)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipdoes not operate by default on a particularScheduler.
- Type Parameters:
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 type- Parameters:
source1- the first sourcePublishersource2- a second sourcePublishersource3- a third sourcePublishersource4- a fourth sourcePublishersource5- a fifth sourcePublishersource6- a sixth sourcePublishersource7- a seventh sourcePublishersource8- an eighth sourcePublishersource9- a ninth sourcePublisherzipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4,source5,source6,source7,source8,source9orzipperisnull- See Also:
-
zipArray
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs public static <@NonNull T, @NonNull R> @NonNull Flowable<R> zipArray(@NonNull @NonNull Function<? super Object[], ? extends @NonNull R> zipper, boolean delayError, int bufferSize, @NonNull @NonNull Flow.Publisher<? extends @NonNull T>... sources) Returns aFlowablethat emits the results of a specified combiner function applied to combinations of items emitted, in sequence, by an array of otherFlow.Publishers.zipapplies this function in strict sequence, so the first item emitted by the newPublisherwill be the result of the function applied to the first item emitted by each of the sourcePublishers; the second item emitted by the newPublisherwill be the result of the function applied to the second item emitted by each of thosePublishers; and so forth.The resulting
Flowablereturned fromzipwill invokeonNextas many times as the number ofonNextinvocations of the sourcePublisherthat emits the fewest items.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:zip(new Publisher[]{range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)}, (a) -> a)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipArraydoes not operate by default on a particularScheduler.
- Type Parameters:
T- the common element typeR- the result type- Parameters:
zipper- a function that, when applied to an item emitted by each of the sourcePublishers, results in an item that will be emitted by the resultingFlowabledelayError- delay errors signaled by any of the sourcePublisheruntil allPublishers terminatebufferSize- the number of elements to prefetch from each sourcePublishersources- an array of sourcePublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsourcesorzipperisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
all
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<Boolean> all(@NonNull @NonNull Predicate<? super @NonNull T> predicate) Returns aSinglethat emits aBooleanthat indicates whether all of the items emitted by the currentFlowablesatisfy a condition.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
alldoes not operate by default on a particularScheduler.
- Parameters:
predicate- a function that evaluates an item and returns aBoolean- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
ambWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> ambWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> other) Mirrors theFlow.Publisher(current or provided) that first either emits an item or sends a termination notification.
When the current
Flowablesignals an item or terminates first, the subscription to the otherPublisheris canceled. If the otherPublishersignals an item or terminates first, the subscription to the currentFlowableis canceled.- Backpressure:
- The operator itself doesn't interfere with backpressure which is determined by the winning
Publisher's backpressure behavior. - Scheduler:
ambWithdoes not operate by default on a particularScheduler.- Error handling:
-
If the losing
Publishersignals an error, the error is routed to the global error handler viaRxJavaPlugins.onError(Throwable).
- Parameters:
other- aPublishercompeting to react first. A subscription to this providedPublisherwill occur after subscribing to the currentFlowable.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
any
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<Boolean> any(@NonNull @NonNull Predicate<? super @NonNull T> predicate) Returns aSinglethat emitstrueif any item emitted by the currentFlowablesatisfies a specified condition, otherwisefalse. Note: this always emitsfalseif the currentFlowableis empty.
In Rx.Net this is the
anyoperator but we renamed it in RxJava to better match Java naming idioms.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
anydoes not operate by default on a particularScheduler.
- Parameters:
predicate- the condition to test items emitted by the currentFlowable- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
blockingFirst
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingFirst()Returns the first item emitted by thisFlowable, or throwsNoSuchElementExceptionif it emits no items.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingFirstdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Returns:
- the new
Flowableinstance - Throws:
NoSuchElementException- if thisFlowableemits no items- See Also:
-
blockingFirst
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingFirst(@NonNull @NonNull T defaultItem) Returns the first item emitted by thisFlowable, or a default value if it emits no items.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingFirstdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Parameters:
defaultItem- a default value to return if thisFlowableemits no items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
blockingForEach
@BackpressureSupport(FULL) @SchedulerSupport("none") public final void blockingForEach(@NonNull @NonNull Consumer<? super @NonNull T> onNext) Consumes the currentFlowablein a blocking fashion and invokes the givenConsumerwith 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
Consumeron the current thread whilesubscribe(Consumer)executes the consumer on the original caller thread of the sequence.- Backpressure:
- The operator requests
bufferSize()upfront, then 75% of this amount when 75% is received. - Scheduler:
blockingForEachdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Parameters:
onNext- theConsumerto invoke for each item emitted by theFlowable- Throws:
NullPointerException- ifonNextisnullRuntimeException- if an error occurs;Errors andRuntimeExceptions are rethrown as they are, checkedExceptions are wrapped intoRuntimeExceptions- See Also:
-
blockingForEach
@BackpressureSupport(FULL) @SchedulerSupport("none") public final void blockingForEach(@NonNull @NonNull Consumer<? super @NonNull T> onNext, int bufferSize) Consumes the currentFlowablein a blocking fashion and invokes the givenConsumerwith 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
Consumeron the current thread whilesubscribe(Consumer)executes the consumer on the original caller thread of the sequence.- Backpressure:
- The operator requests the given
prefetchamount upfront, then 75% of this amount when 75% is received. - Scheduler:
blockingForEachdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Parameters:
onNext- theConsumerto invoke for each item emitted by theFlowablebufferSize- the number of items to prefetch upfront, then 75% of it after 75% received- Throws:
NullPointerException- ifonNextisnullIllegalArgumentException- ifbufferSizeis non-positiveRuntimeException- if an error occurs;Errors andRuntimeExceptions are rethrown as they are, checkedExceptions are wrapped intoRuntimeExceptions- See Also:
-
blockingIterable
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Iterable<T> blockingIterable()Converts thisFlowableinto anIterable.
- Backpressure:
- The operator expects the upstream to honor backpressure otherwise the returned
Iterable's iterator will throw aMissingBackpressureException. - Scheduler:
blockingIterabledoes not operate by default on a particularScheduler.
- Returns:
- the new
Iterableinstance - See Also:
-
blockingIterable
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Iterable<T> blockingIterable(int bufferSize) Converts thisFlowableinto anIterable.
- Backpressure:
- The operator expects the upstream to honor backpressure otherwise the returned
Iterable's iterator will throw aMissingBackpressureException. - Scheduler:
blockingIterabledoes not operate by default on a particularScheduler.
- Parameters:
bufferSize- the number of items to prefetch from the currentFlowable- Returns:
- the new
Iterableinstance - Throws:
IllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
blockingLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingLast()Returns the last item emitted by thisFlowable, or throwsNoSuchElementExceptionif thisFlowableemits no items.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingLastdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Returns:
- the new
Flowableinstance - Throws:
NoSuchElementException- if thisFlowableemits no items- See Also:
-
blockingLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingLast(@NonNull @NonNull T defaultItem) Returns the last item emitted by thisFlowable, or a default value if it emits no items.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingLastdoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Parameters:
defaultItem- a default value to return if thisFlowableemits no items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
blockingLatest
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Iterable<T> blockingLatest()Returns anIterablethat returns the latest item emitted by thisFlowable, waiting if necessary for one to become available.If this
Flowableproduces items faster thanIterator.nexttakes them,onNextevents might be skipped, butonErrororonCompleteevents are not.Note also that an
onNextdirectly followed byonCompletemight hide theonNextevent.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingLatestdoes not operate by default on a particularScheduler.
- Returns:
- the new
Iterableinstance - See Also:
-
blockingMostRecent
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Iterable<T> blockingMostRecent(@NonNull @NonNull T initialItem) Returns anIterablethat always returns the item most recently emitted by thisFlowable.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingMostRecentdoes not operate by default on a particularScheduler.
- Parameters:
initialItem- the initial item that theIterablesequence will yield if thisFlowablehas not yet emitted an item- Returns:
- the new
Iterableinstance - Throws:
NullPointerException- ifinitialItemisnull- See Also:
-
blockingNext
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Iterable<T> blockingNext()Returns anIterablethat blocks until thisFlowableemits another item, then returns that item.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingNextdoes not operate by default on a particularScheduler.
- Returns:
- the new
Iterableinstance - See Also:
-
blockingSingle
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingSingle()If thisFlowablecompletes after emitting a single item, return that item, otherwise throw aNoSuchElementException.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSingledoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Returns:
- the new
Flowableinstance - See Also:
-
blockingSingle
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final T blockingSingle(@NonNull @NonNull T defaultItem) If thisFlowablecompletes after emitting a single item, return that item; if it emits more than one item, throw anIllegalArgumentException; if it emits no items, return a default value.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSingledoes not operate by default on a particularScheduler.- Error handling:
- If the source signals an error, the operator wraps a checked
ExceptionintoRuntimeExceptionand throws that. Otherwise,RuntimeExceptions andErrors are rethrown as they are.
- Parameters:
defaultItem- a default value to return if thisFlowableemits no items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
toFuture
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Future<T> toFuture()Returns aFuturerepresenting the only value emitted by thisFlowable.
If the
Flowableemits more than one item,Futurewill receive anIndexOutOfBoundsException. If theFlowableis empty,Futurewill receive aNoSuchElementException. TheFlowablesource has to terminate in order for the returnedFutureto terminate as well.If the
Flowablemay emit more than one item, useFlowable.toList().toFuture().- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
toFuturedoes not operate by default on a particularScheduler.
- Returns:
- the new
Futureinstance - See Also:
-
blockingSubscribe
Runs the currentFlowableto 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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
- Since:
- 2.0
- See Also:
-
blockingSubscribe
@BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext) Subscribes to the source and calls the given callbacks on the current thread.If the
Flowableemits an error, it is wrapped into anOnErrorNotImplementedExceptionand routed to theRxJavaPlugins.onError(Throwable)handler. Using the overloadsblockingSubscribe(Consumer, Consumer)orblockingSubscribe(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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- the callback action for each source value- Throws:
NullPointerException- ifonNextisnull- Since:
- 2.0
- See Also:
-
blockingSubscribe
@BackpressureSupport(FULL) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.If the
Flowableemits an error, it is wrapped into anOnErrorNotImplementedExceptionand routed to theRxJavaPlugins.onError(Throwable)handler. Using the overloadsblockingSubscribe(Consumer, Consumer)orblockingSubscribe(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.
- Backpressure:
- The operator consumes the current
Flowablein an bounded manner (up to bufferSize outstanding request amount for items). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
History: 2.1.15 - experimental
- Parameters:
onNext- the callback action for each source valuebufferSize- the size of the buffer- Throws:
NullPointerException- ifonNextisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.2
- See Also:
-
blockingSubscribe
@BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError) Subscribes to the source and calls the given callbacks on the current thread.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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- the callback action for each source valueonError- the callback action for an error event- Throws:
NullPointerException- ifonNextoronErrorisnull- Since:
- 2.0
- See Also:
-
blockingSubscribe
@BackpressureSupport(FULL) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.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.
- Backpressure:
- The operator consumes the current
Flowablein an bounded manner (up to bufferSize outstanding request amount for items). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
History: 2.1.15 - experimental
- Parameters:
onNext- the callback action for each source valueonError- the callback action for an error eventbufferSize- the size of the buffer- Throws:
NullPointerException- ifonNextoronErrorisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.2
- See Also:
-
blockingSubscribe
@BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete) Subscribes to the source and calls the given callbacks on the current thread.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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- the callback action for each source valueonError- the callback action for an error eventonComplete- the callback action for the completion event.- Throws:
NullPointerException- ifonNext,onErrororonCompleteisnull- Since:
- 2.0
-
blockingSubscribe
@BackpressureSupport(FULL) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete, int bufferSize) Subscribes to the source and calls the given callbacks on the current thread.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.
- Backpressure:
- The operator consumes the current
Flowablein an bounded manner (up to bufferSize outstanding request amount for items). - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
History: 2.1.15 - experimental
- Parameters:
onNext- the callback action for each source valueonError- the callback action for an error eventonComplete- the callback action for the completion event.bufferSize- the size of the buffer- Throws:
NullPointerException- ifonNext,onErrororonCompleteisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.2
-
blockingSubscribe
@BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final void blockingSubscribe(@NonNull @NonNull Flow.Subscriber<? super @NonNull T> subscriber) Subscribes to the source and calls theFlow.Subscribermethods on the current thread.Note that calling this method will block the caller thread until the upstream terminates normally, with an error or the
Subscribercancels theFlow.Subscriptionit receives viaFlow.Subscriber.onSubscribe(Subscription). Therefore, calling this method from special threads such as the Android Main Thread or the Swing Event Dispatch Thread is not recommended.- Backpressure:
- The supplied
Subscriberdetermines how backpressure is applied. - Scheduler:
blockingSubscribedoes not operate by default on a particularScheduler.
- Parameters:
subscriber- the subscriber to forward events and calls to in the current thread- Throws:
NullPointerException- ifsubscriberisnull- Since:
- 2.0
-
buffer
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<List<T>> buffer(int count) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each containingcountitems. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- The operator honors backpressure from downstream and expects the current
Flowableto honor it as well, although not enforced; violation may lead toMissingBackpressureExceptionsomewhere downstream. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Parameters:
count- the maximum number of items in each buffer before it should be emitted- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<List<T>> buffer(int count, int skip) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits buffers everyskipitems, each containingcountitems. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- The operator honors backpressure from downstream and expects the current
Flowableto honor it as well, although not enforced; violation may lead toMissingBackpressureExceptionsomewhere downstream. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Parameters:
count- the maximum size of each buffer before it should be emittedskip- how many items emitted by the currentFlowableshould be skipped before starting a new buffer. Note that whenskipandcountare equal, this is the same operation asbuffer(int).- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountorskipis non-positive- See Also:
-
buffer
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(int count, int skip, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits buffers everyskipitems, each containingcountitems. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- The operator honors backpressure from downstream and expects the current
Flowableto honor it as well, although not enforced; violation may lead toMissingBackpressureExceptionsomewhere downstream. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the collection subclass type to buffer into- Parameters:
count- the maximum size of each buffer before it should be emittedskip- how many items emitted by the currentFlowableshould be skipped before starting a new buffer. Note that whenskipandcountare equal, this is the same operation asbuffer(int).bufferSupplier- a factory function that returns an instance of the collection subclass to be used and returned as the buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifbufferSupplierisnullIllegalArgumentException- ifcountorskipis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(int count, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each containingcountitems. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- The operator honors backpressure from downstream and expects the current
Flowableto honor it as well, although not enforced; violation may lead toMissingBackpressureExceptionsomewhere downstream. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the collection subclass type to buffer into- Parameters:
count- 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 buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifbufferSupplierisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowablestarts a new buffer periodically, as determined by thetimeskipargument. It emits each buffer after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanandtimeskiparguments- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowablestarts a new buffer periodically, as determined by thetimeskipargument, and on the specifiedscheduler. It emits each buffer after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanandtimeskipargumentsscheduler- theSchedulerto use when determining the end and start of a buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
buffer
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final <@NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowablestarts a new buffer periodically, as determined by thetimeskipargument, and on the specifiedscheduler. It emits each buffer after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
U- the collection subclass type to buffer into- Parameters:
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 thetimespanandtimeskipargumentsscheduler- theSchedulerto 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 buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunit,schedulerorbufferSupplierisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each of a fixed duration specified by thetimespanargument. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanargument- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, @NonNull @NonNull TimeUnit unit, int count) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each of a fixed duration specified by thetimespanargument or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanargumentcount- the maximum size of each buffer before it is emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, int count) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each of a fixed duration specified by thetimespanargument as measured on the specifiedscheduler, or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a buffercount- the maximum size of each buffer before it is emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final <@NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, int count, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier, boolean restartTimerOnMaxSize) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each of a fixed duration specified by thetimespanargument as measured on the specifiedscheduler, or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
U- the collection subclass type to buffer into- Parameters:
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 thetimespanargumentscheduler- theSchedulerto 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- iftrue, the time window is restarted when the max capacity of the current buffer is reached- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunit,schedulerorbufferSupplierisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<List<T>> buffer(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping buffers, each of a fixed duration specified by thetimespanargument and on the specifiedscheduler. When the currentFlowablecompletes, the resultingFlowableemits the current buffer and propagates the notification from the currentFlowable. Note that if the currentFlowableissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it uses time. It requests
Long.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull TOpening, @NonNull TClosing> @NonNull Flowable<List<T>> buffer(@NonNull @NonNull Flow.Publisher<? extends @NonNull TOpening> openingIndicator, @NonNull @NonNull Function<? super @NonNull TOpening, @NonNull ? extends Flow.Publisher<? extends @NonNull TClosing>> closingIndicator) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits buffers that it creates when the specifiedopeningIndicatorFlow.Publisheremits an item, and closes when thePublisherreturned fromclosingIndicatoremits an item. If any of the currentPFlowable,openingIndicatororclosingIndicatorissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it is instead controlled by the given
Publishers and buffers data. It requestsLong.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
TOpening- the element type of the buffer-openingPublisherTClosing- the element type of the individual buffer-closingPublishers- Parameters:
openingIndicator- thePublisherthat, when it emits an item, causes a new buffer to be createdclosingIndicator- theFunctionthat is used to produce aPublisherfor every buffer created. When thisPublisheremits an item, the associated buffer is emitted.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifopeningIndicatororclosingIndicatorisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull TOpening, @NonNull TClosing, @NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(@NonNull @NonNull Flow.Publisher<? extends @NonNull TOpening> openingIndicator, @NonNull @NonNull Function<? super @NonNull TOpening, @NonNull ? extends Flow.Publisher<? extends @NonNull TClosing>> closingIndicator, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits buffers of items it collects from the currentFlowable. The resultingFlowableemits buffers that it creates when the specifiedopeningIndicatorFlow.Publisheremits an item, and closes when thePublisherreturned fromclosingIndicatoremits an item. If any of the currentFlowable,openingIndicatororclosingIndicatorissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.
- Backpressure:
- This operator does not support backpressure as it is instead controlled by the given
Publishers and buffers data. It requestsLong.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
TOpening- the element type of the buffer-openingPublisherTClosing- the element type of the individual buffer-closingPublishersU- the collection subclass type to buffer into- Parameters:
openingIndicator- thePublisherthat, when it emits an item, causes a new buffer to be createdclosingIndicator- theFunctionthat is used to produce aPublisherfor every buffer created. When thisPublisheremits 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 buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifopeningIndicator,closingIndicatororbufferSupplierisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull B> @NonNull Flowable<List<T>> buffer(@NonNull @NonNull Flow.Publisher<@NonNull B> boundaryIndicator) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.
Completion of either the source or the boundary
Publishercauses the returnedPublisherto emit the latest buffer and complete. If either the currentFlowableor the boundaryPublisherissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.- Backpressure:
- This operator does not support backpressure as it is instead controlled by the
Publisherboundaryand buffers data. It requestsLong.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
B- the boundary value type (ignored)- Parameters:
boundaryIndicator- the boundaryPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifboundaryIndicatorisnull- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull B> @NonNull Flowable<List<T>> buffer(@NonNull @NonNull Flow.Publisher<@NonNull B> boundaryIndicator, int initialCapacity) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.
Completion of either the source or the boundary
Publishercauses the returnedPublisherto emit the latest buffer and complete. If either the currentFlowableor the boundaryPublisherissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.- Backpressure:
- This operator does not support backpressure as it is instead controlled by the
Publisherboundaryand buffers data. It requestsLong.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
B- the boundary value type (ignored)- Parameters:
boundaryIndicator- the boundaryPublisherinitialCapacity- the initial capacity of each buffer chunk- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifboundaryIndicatorisnullIllegalArgumentException- ifinitialCapacityis non-positive- See Also:
-
buffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull B, @NonNull U extends Collection<? super @NonNull T>> @NonNull Flowable<U> buffer(@NonNull @NonNull Flow.Publisher<@NonNull B> boundaryIndicator, @NonNull @NonNull Supplier<@NonNull U> bufferSupplier) Returns aFlowablethat emits non-overlapping buffered items from the currentFlowableeach time the specified boundaryFlow.Publisheremits an item.
Completion of either the source or the boundary
Publishercauses the returnedPublisherto emit the latest buffer and complete. If either the currentFlowableor the boundaryPublisherissues anonErrornotification the event is passed on immediately without first emitting the buffer it is in the process of assembling.- Backpressure:
- This operator does not support backpressure as it is instead controlled by the
Publisherboundaryand buffers data. It requestsLong.MAX_VALUEupstream and does not obey downstream requests. - Scheduler:
- This version of
bufferdoes not operate by default on a particularScheduler.
- Type Parameters:
B- the boundary value type (ignored)U- the collection subclass type to buffer into- Parameters:
boundaryIndicator- the boundaryPublisherbufferSupplier- a factory function that returns an instance of the collection subclass to be used and returned as the buffer- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifboundaryIndicatororbufferSupplierisnull- See Also:
-
cache
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> cache()Returns aFlowablethat subscribes to thisFlow.Publisherlazily, caches all of its events and replays them, in the same order as received, to all the downstream subscribers.
This is useful when you want a
Publisherto cache responses and you can't control the subscribe/cancel behavior of all theFlow.Subscribers.The operator subscribes only when the first downstream subscriber subscribes and maintains a single subscription towards this
Publisher. In contrast, the operator family ofreplay()that return aConnectableFlowablerequire an explicit call toConnectableFlowable.connect().Note: You sacrifice the ability to cancel the origin when you use the
cacheoperator so be careful not to use this operator onPublishers that emit an infinite or very large number of items that will use up memory. A possible workaround is to applytakeUntil(Publisher)with a predicate or another source before (and perhaps after) the application ofcache().
Since the operator doesn't allow clearing the cached values either, the possible workaround is to forget all references to it viaAtomicBoolean shouldStop = new AtomicBoolean(); source.takeUntil(v -> shouldStop.get()) .cache() .takeUntil(v -> shouldStop.get()) .subscribe(...);onTerminateDetach()applied along with the previous workaround:AtomicBoolean shouldStop = new AtomicBoolean(); source.takeUntil(v -> shouldStop.get()) .onTerminateDetach() .cache() .takeUntil(v -> shouldStop.get()) .onTerminateDetach() .subscribe(...);- Backpressure:
- The operator consumes this
Publisherin an unbounded fashion but respects the backpressure of each downstreamSubscriberindividually. - Scheduler:
cachedoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
cacheWithInitialCapacity
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> cacheWithInitialCapacity(int initialCapacity) Returns aFlowablethat subscribes to thisFlow.Publisherlazily, caches all of its events and replays them, in the same order as received, to all the downstream subscribers.
This is useful when you want a
Publisherto cache responses and you can't control the subscribe/cancel behavior of all theFlow.Subscribers.The operator subscribes only when the first downstream subscriber subscribes and maintains a single subscription towards this
Publisher. In contrast, the operator family ofreplay()that return aConnectableFlowablerequire an explicit call toConnectableFlowable.connect().Note: You sacrifice the ability to cancel the origin when you use the
cacheoperator so be careful not to use this operator onPublishers that emit an infinite or very large number of items that will use up memory. A possible workaround is to applytakeUntil(Publisher)with a predicate or another source before (and perhaps after) the application ofcacheWithInitialCapacity().
Since the operator doesn't allow clearing the cached values either, the possible workaround is to forget all references to it viaAtomicBoolean shouldStop = new AtomicBoolean(); source.takeUntil(v -> shouldStop.get()) .cache() .takeUntil(v -> shouldStop.get()) .subscribe(...);onTerminateDetach()applied along with the previous workaround:AtomicBoolean shouldStop = new AtomicBoolean(); source.takeUntil(v -> shouldStop.get()) .onTerminateDetach() .cache() .takeUntil(v -> shouldStop.get()) .onTerminateDetach() .subscribe(...);- Backpressure:
- The operator consumes this
Publisherin an unbounded fashion but respects the backpressure of each downstreamSubscriberindividually. - Scheduler:
cacheWithInitialCapacitydoes not operate by default on a particularScheduler.
Note: The capacity hint is not an upper bound on cache size. For that, consider
replay(int)in combination withConnectableFlowable.autoConnect()or similar.- Parameters:
initialCapacity- hint for number of items to cache (for optimizing underlying data structure)- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifinitialCapacityis non-positive- See Also:
-
cast
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<U> cast(@NonNull @NonNull Class<@NonNull U> clazz) Returns aFlowablethat emits the upstream items while they can be cast viaClass.cast(Object)until the upstream terminates, or until the upstream signals an item which can't be cast, resulting in aClassCastExceptionto be signaled to the downstream.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
castdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the output value type cast to- Parameters:
clazz- the target class to use to try and cast the upstream items into- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifclazzisnull- See Also:
-
collect
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull U> @NonNull Single<U> collect(@NonNull @NonNull Supplier<? extends @NonNull U> initialItemSupplier, @NonNull @NonNull BiConsumer<? super @NonNull U, ? super @NonNull T> collector) Collects items emitted by the finite sourceFlow.Publisherinto a single mutable data structure and returns aSinglethat emits this structure.
This is a simplified version of
reducethat does not need to return the state on each pass.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- This operator does not support backpressure because by intent it will receive all values and reduce
them to a single
onNext. - Scheduler:
collectdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the accumulator and output type- Parameters:
initialItemSupplier- the mutable data structure that will collect the itemscollector- a function that accepts thestateand an emitted item, and modifiesstateaccordingly- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifinitialItemSupplierorcollectorisnull- See Also:
-
collectInto
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull U> @NonNull Single<U> collectInto(@NonNull U initialItem, @NonNull @NonNull BiConsumer<? super @NonNull U, ? super @NonNull T> collector) Collects items emitted by the finite sourceFlow.Publisherinto a single mutable data structure and returns aSinglethat emits this structure.
This is a simplified version of
reducethat does not need to return the state on each pass.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- This operator does not support backpressure because by intent it will receive all values and reduce
them to a single
onNext. - Scheduler:
collectIntodoes not operate by default on a particularScheduler.
- Type Parameters:
U- the accumulator and output type- Parameters:
initialItem- the mutable data structure that will collect the itemscollector- a function that accepts thestateand an emitted item, and modifiesstateaccordingly- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifinitialItemorcollectorisnull- See Also:
-
compose
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> compose(@NonNull @NonNull FlowableTransformer<? super @NonNull T, ? extends @NonNull R> composer) Transform the currentFlowableby applying a particularFlowableTransformerfunction to it.This method operates on the
Flowableitself whereaslift(FlowableOperator)operates on theFlowable'sFlow.Subscribers.If the operator you are creating is designed to act on the individual items emitted by a current
Flowable, uselift(FlowableOperator). If your operator is designed to transform the currentFlowableas a whole (for instance, by applying a particular set of existing RxJava operators to it) usecompose.- Backpressure:
- The operator itself doesn't interfere with the backpressure behavior which only depends
on what kind of
Flow.PublishertheFlowableTransformerreturns. - Scheduler:
composedoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the outputPublisher- Parameters:
composer- implements the function that transforms the currentFlowable- Returns:
- the new composed
Flowableinstance - Throws:
NullPointerException- ifcomposerisnull- See Also:
-
concatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowablethat emits items resulting from applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.
Note that there is no guarantee where the given
mapperfunction 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 themapperfunction is confined to a known thread, use theconcatMap(Function, int, Scheduler)overload.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of the innerPublishersources and thus the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
concatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int prefetch) Returns a newFlowablethat emits items resulting from applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.
Note that there is no guarantee where the given
mapperfunction 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 themapperfunction is confined to a known thread, use theconcatMap(Function, int, Scheduler)overload.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of the innerPublishersources and thus the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherprefetch- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- See Also:
-
concatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> concatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int prefetch, @NonNull @NonNull Scheduler scheduler) Returns a newFlowablethat emits items resulting from applying a function (on a designated scheduler) that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then emitting the items that result from concatenating those returnedPublishers.
The difference between
concatMap(Function, int)and this operator is that this operator guarantees themapperfunction is executed on the specified scheduler.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapexecutes the givenmapperfunction on the providedScheduler.
- Type Parameters:
R- the type of the innerPublishersources and thus the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherprefetch- the number of elements to prefetch from the currentFlowablescheduler- the scheduler where themapperfunction will be executed- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorschedulerisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 3.0.0
- See Also:
-
concatMapCompletable
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(FULL) @NonNull public final @NonNull Completable concatMapCompletable(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream items intoCompletableSources and subscribes to them one after the other completes.
- Backpressure:
- The operator expects the upstream to support backpressure. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapCompletabledoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with the upstream item and should return aCompletableSourceto become the next source to be subscribed to- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapCompletable
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public final @NonNull Completable concatMapCompletable(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, int prefetch) Maps the upstream items intoCompletableSources and subscribes to them one after the other completes.
- Backpressure:
- The operator expects the upstream to support backpressure. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapCompletabledoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with the upstream item and should return aCompletableSourceto become the next source to be subscribed toprefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousCompletableSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoCompletableSources.- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatMapCompletableDelayError
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(FULL) @NonNull public final @NonNull Completable concatMapCompletableDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, delaying all errors till both thisFlowableand all innerCompletableSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapCompletableDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with the upstream item and should return aCompletableSourceto become the next source to be subscribed to- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapCompletableDelayError
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(FULL) @NonNull public final @NonNull Completable concatMapCompletableDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean tillTheEnd) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, optionally delaying all errors till both thisFlowableand all innerCompletableSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapCompletableDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with the upstream item and should return aCompletableSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerCompletableSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerCompletableSourceterminates and only then is it emitted to the downstream.- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapCompletableDelayError
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public final @NonNull Completable concatMapCompletableDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoCompletableSources and subscribes to them one after the other terminates, optionally delaying all errors till both thisFlowableand all innerCompletableSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapCompletableDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with the upstream item and should return aCompletableSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerCompletableSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerCompletableSourceterminates and only then is it emitted to the downstream.prefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousCompletableSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoCompletableSources.- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatMapDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Maps each of the items into aFlow.Publisher, 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 innerPublishers till all of them terminate.Note that there is no guarantee where the given
mapperfunction 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 themapperfunction is confined to a known thread, use theconcatMapDelayError(Function, boolean, int, Scheduler)overload.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that maps the items of thisPublisherinto the innerPublishers.- Returns:
- the new
Flowableinstance with the concatenation behavior - Throws:
NullPointerException- ifmapperisnull- See Also:
-
concatMapDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps each of the items into aFlow.Publisher, 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 innerPublishers till all of them terminate.Note that there is no guarantee where the given
mapperfunction 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 themapperfunction is confined to a known thread, use theconcatMapDelayError(Function, boolean, int, Scheduler)overload.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that maps the items of thisPublisherinto the innerPublishers.tillTheEnd- iftrue, all errors from the outer and innerPublishersources are delayed until the end, iffalse, an error from the main source is signaled when the current innerPublishersource terminatesprefetch- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance with the concatenation behavior - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- See Also:
-
concatMapDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> concatMapDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch, @NonNull @NonNull Scheduler scheduler) Maps each of the upstream items into aFlow.Publisher, subscribes to them one after the other, one at a time and emits their values in order while executing the mapper function on the designated scheduler, delaying any error from either this or any of the innerPublishers till all of them terminate.The difference between
concatMapDelayError(Function, boolean, int)and this operator is that this operator guarantees themapperfunction is executed on the specified scheduler.- Backpressure:
- The operator honors backpressure from downstream. Both this and the inner
Publishers are expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. If any of the innerPublishers doesn't honor backpressure, that may throw anIllegalStateExceptionwhen thatPublishercompletes. - Scheduler:
concatMapDelayErrorexecutes the givenmapperfunction on the providedScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that maps the items of thisPublisherinto the innerPublishers.tillTheEnd- iftrue, all errors from the outer and innerPublishersources are delayed until the end, iffalse, an error from the main source is signaled when the current innerPublishersource terminatesprefetch- the number of elements to prefetch from the currentFlowablescheduler- the scheduler where themapperfunction will be executed- Returns:
- the new
Flowableinstance with the concatenation behavior - Throws:
NullPointerException- ifmapperorschedulerisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 3.0.0
- See Also:
-
concatMapEager
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapEager(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the inner
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream, however, due to the eagerness requirement, sources are subscribed to in unbounded mode and their values are queued up in an unbounded buffer.
- Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the value type- Parameters:
mapper- the function that maps a sequence of values into a sequence ofPublishers that will be eagerly concatenated- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.0
-
concatMapEager
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapEager(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int maxConcurrency, int prefetch) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the inner
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream, however, due to the eagerness requirement, sources are subscribed to in unbounded mode and their values are queued up in an unbounded buffer.
- Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the value type- Parameters:
mapper- the function that maps a sequence of values into a sequence ofPublishers that will be eagerly concatenatedmaxConcurrency- the maximum number of concurrent subscribedPublishersprefetch- hints about the number of expected values from each innerPublisher, must be positive- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.0
-
concatMapEagerDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapEagerDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singlePublisher.Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the inner
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream, however, due to the eagerness requirement, sources are subscribed to in unbounded mode and their values are queued up in an unbounded buffer.
- Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the value type- Parameters:
mapper- the function that maps a sequence of values into a sequence ofPublishers that will be eagerly concatenatedtillTheEnd- iftrue, all errors from the outer and innerPublishersources are delayed until the end, iffalse, an error from the main source is signaled when the current innerPublishersource terminates- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.0
-
concatMapEagerDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapEagerDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean tillTheEnd, int maxConcurrency, int prefetch) Maps a sequence of values intoFlow.Publishers and concatenates thesePublishers eagerly into a singleFlowablesequence.Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the inner
Publishers. The operator buffers the values emitted by thesePublishers and then drains them in order, each one after the previous one completes.- Backpressure:
- Backpressure is honored towards the downstream, however, due to the eagerness requirement, sources are subscribed to in unbounded mode and their values are queued up in an unbounded buffer.
- Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the value type- Parameters:
mapper- the function that maps a sequence of values into a sequence ofPublishers that will be eagerly concatenatedtillTheEnd- iftrue, exceptions from the currentFlowableand all the innerPublishers are delayed until all of them terminate, iffalse, exception from the currentFlowableis delayed until the currently runningPublisherterminatesmaxConcurrency- the maximum number of concurrent subscribedPublishersprefetch- the number of elements to prefetch from each sourcePublisher- Returns:
- the new
Flowableinstance with the specified concatenation behavior - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyorprefetchis non-positive- Since:
- 2.0
-
concatMapIterable
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U> @NonNull Flowable<U> concatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper) Returns aFlowablethat concatenate each item emitted by the currentFlowablewith the values in anIterablecorresponding to that item that is generated by a selector.- Backpressure:
- The operator honors backpressure from downstream. The current
Flowables is expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of item emitted by the resultingFlowable- Parameters:
mapper- a function that returns anIterablesequence of values for when given an item emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
concatMapIterable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<U> concatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, int prefetch) Returns aFlowablethat concatenate each item emitted by the currentFlowablewith the values in anIterablecorresponding to that item that is generated by a selector.- Backpressure:
- The operator honors backpressure from downstream. The current
Flowableis expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of item emitted by the resultingFlowable- Parameters:
mapper- a function that returns anIterablesequence of values for when given an item emitted by the currentFlowableprefetch- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- See Also:
-
concatMapMaybe
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapMaybe(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources and subscribes to them one after the other succeeds or completes, emits their success value if available or terminates immediately if either thisFlowableor the current innerMaybeSourcefail.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapMaybedoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerMaybeSources- Parameters:
mapper- the function called with the upstream item and should return aMaybeSourceto become the next source to be subscribed to- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapMaybe
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapMaybe(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, int prefetch) Maps the upstream items intoMaybeSources and subscribes to them one after the other succeeds or completes, emits their success value if available or terminates immediately if either thisFlowableor the current innerMaybeSourcefail.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapMaybedoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerMaybeSources- Parameters:
mapper- the function called with the upstream item and should return aMaybeSourceto become the next source to be subscribed toprefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousMaybeSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoMaybeSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatMapMaybeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapMaybeDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and delaying all errors till both thisFlowableand all innerMaybeSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapMaybeDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerMaybeSources- Parameters:
mapper- the function called with the upstream item and should return aMaybeSourceto become the next source to be subscribed to- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapMaybeDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapMaybeDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and optionally delaying all errors till both thisFlowableand all innerMaybeSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapMaybeDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerMaybeSources- Parameters:
mapper- the function called with the upstream item and should return aMaybeSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerMaybeSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerMaybeSourceterminates and only then is it emitted to the downstream.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapMaybeDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapMaybeDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoMaybeSources and subscribes to them one after the other terminates, emits their success value if available and optionally delaying all errors till both thisFlowableand all innerMaybeSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapMaybeDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerMaybeSources- Parameters:
mapper- the function called with the upstream item and should return aMaybeSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerMaybeSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerMaybeSourceterminates and only then is it emitted to the downstream.prefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousMaybeSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoMaybeSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatMapSingle
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapSingle(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds, emits their success values or terminates immediately if either thisFlowableor the current innerSingleSourcefail.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapSingledoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerSingleSources- Parameters:
mapper- the function called with the upstream item and should return aSingleSourceto become the next source to be subscribed to- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapSingle
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapSingle(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, int prefetch) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds, emits their success values or terminates immediately if either thisFlowableor the current innerSingleSourcefail.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapSingledoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerSingleSources- Parameters:
mapper- the function called with the upstream item and should return aSingleSourceto become the next source to be subscribed toprefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousSingleSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoSingleSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatMapSingleDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapSingleDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and delays all errors till both thisFlowableand all innerSingleSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapSingleDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerSingleSources- Parameters:
mapper- the function called with the upstream item and should return aSingleSourceto become the next source to be subscribed to- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapSingleDelayError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapSingleDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean tillTheEnd) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and optionally delays all errors till both thisFlowableand all innerSingleSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapSingleDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerSingleSources- Parameters:
mapper- the function called with the upstream item and should return aSingleSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerSingleSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerSingleSourceterminates and only then is it emitted to the downstream.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
concatMapSingleDelayError
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> concatMapSingleDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean tillTheEnd, int prefetch) Maps the upstream items intoSingleSources and subscribes to them one after the other succeeds or fails, emits their success values and optionally delays errors till both thisFlowableand all innerSingleSources terminate.
- Backpressure:
- The operator expects the upstream to support backpressure and honors
the backpressure from downstream. If this
Flowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
concatMapSingleDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the result type of the innerSingleSources- Parameters:
mapper- the function called with the upstream item and should return aSingleSourceto become the next source to be subscribed totillTheEnd- Iftrue, errors from thisFlowableor any of the innerSingleSources are delayed until all of them terminate. Iffalse, an error from thisFlowableis delayed until the current innerSingleSourceterminates and only then is it emitted to the downstream.prefetch- The number of upstream items to prefetch so that fresh items are ready to be mapped when a previousSingleSourceterminates. The operator replenishes after half of the prefetch amount has been consumed and turned intoSingleSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.2
- See Also:
-
concatWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> concatWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items emitted from the currentFlowable, then the next, one after the other, without interleaving them.
- Backpressure:
- The operator honors backpressure from downstream. Both this and the
otherFlow.Publishers are expected to honor backpressure as well. If any of then violates this rule, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
concatWithdoes not operate by default on a particularScheduler.
- Parameters:
other- aPublisherto be concatenated after the current- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
concatWith
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> concatWith(@NonNull @NonNull SingleSource<? extends @NonNull T> other) Returns aFlowablethat emits the items from thisFlowablefollowed by the success item or error event of the otherSingleSource.
- Backpressure:
- The operator supports backpressure and makes sure the success item of the other
SingleSourceis only emitted when there is a demand for it. - Scheduler:
concatWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theSingleSourcewhose signal should be emitted after thisFlowablecompletes normally.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
concatWith
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> concatWith(@NonNull @NonNull MaybeSource<? extends @NonNull T> other) Returns aFlowablethat emits the items from thisFlowablefollowed by the success item or terminal events of the otherMaybeSource.
- Backpressure:
- The operator supports backpressure and makes sure the success item of the other
MaybeSourceis only emitted when there is a demand for it. - Scheduler:
concatWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theMaybeSourcewhose signal should be emitted after thisFlowablecompletes normally.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
concatWith
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> concatWith(@NonNull @NonNull CompletableSource other) Returns aFlowablethat emits items from thisFlowableand when it completes normally, the otherCompletableSourceis subscribed to and the returnedFlowableemits its terminal events.
- Backpressure:
- The operator does not interfere with backpressure between the current
Flowableand the downstream consumer (i.e., acts as pass-through). When the operator switches to theCompletable, backpressure is no longer present becauseCompletabledoesn't have items to apply backpressure to. - Scheduler:
concatWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theCompletableSourceto subscribe to once the currentFlowablecompletes normally- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
contains
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<Boolean> contains(@NonNull @NonNull Object item) Returns aSinglethat emits aBooleanthat indicates whether the currentFlowableemitted a specified item.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
containsdoes not operate by default on a particularScheduler.
- Parameters:
item- the item to search for in the emissions from the currentFlowable- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifitemisnull- See Also:
-
count
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<Long> count()Returns aSinglethat counts the total number of items emitted by the currentFlowableand emits this count as a 64-bitLong.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
countdoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
debounce
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> debounce(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull U>> debounceIndicator) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by another item within a computed debounce duration.
The delivery of the item happens on the thread of the first
onNextoronCompletesignal of the generatedFlow.Publishersequence, which if takes too long, a newer item may arrive from the upstream, causing the generated sequence to get cancelled, which may also interrupt any downstream blocking operation (yielding anInterruptedException). It is recommended processing items that may take long time to be moved to another thread viaobserveOn(Scheduler)applied afterdebounceitself.- Backpressure:
- This operator does not support backpressure as it uses the
debounceSelectorto mark boundaries. - Scheduler:
- This version of
debouncedoes not operate by default on a particularScheduler.
- Type Parameters:
U- the debounce value type (ignored)- Parameters:
debounceIndicator- function to retrieve a sequence that indicates the throttle duration for each item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifdebounceIndicatorisnull- See Also:
-
debounce
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> debounce(long timeout, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat 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
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
Delivery of the item after the grace period happens on the
computationScheduler'sWorkerwhich if takes too long, a newer item may arrive from the upstream, causing theWorker's task to get disposed, which may also interrupt any downstream blocking operation (yielding anInterruptedException). It is recommended processing items that may take long time to be moved to another thread viaobserveOn(Scheduler)applied afterdebounceitself.- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
debounceoperates by default on thecomputationScheduler.
- Parameters:
timeout- the length of the window of time that must pass after the emission of an item from the currentFlowablein which it emits no items in order for the item to be emitted by the resultingFlowableunit- the unit of time for the specifiedtimeout- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
debounce
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> debounce(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler. The timer resets on each emission.Note: If items keep being emitted by the current
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
Delivery of the item after the grace period happens on the given
Scheduler'sWorkerwhich if takes too long, a newer item may arrive from the upstream, causing theWorker's task to get disposed, which may also interrupt any downstream blocking operation (yielding anInterruptedException). It is recommended processing items that may take long time to be moved to another thread viaobserveOn(Scheduler)applied afterdebounceitself.- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- the time each item has to be "the most recent" of those emitted by the currentFlowableto ensure that it's not droppedunit- the unit of time for the specifiedtimeoutscheduler- theSchedulerto use internally to manage the timers that handle the timeout for each item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
debounce
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> debounce(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler. The timer resets on each emission.Note: If items keep being emitted by the current
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
Delivery of the item after the grace period happens on the given
Scheduler'sWorkerwhich if takes too long, a newer item may arrive from the upstream, causing theWorker's task to get disposed, which may also interrupt any downstream blocking operation (yielding anInterruptedException). It is recommended processing items that may take long time to be moved to another thread viaobserveOn(Scheduler)applied afterdebounceitself.- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- the time each item has to be "the most recent" of those emitted by the currentFlowableto ensure that it's not droppedunit- the unit of time for the specifiedtimeoutscheduler- theSchedulerto 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 one- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnulloronDroppedisnull- Since:
- 3.1.6 - Experimental
- See Also:
-
defaultIfEmpty
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> defaultIfEmpty(@NonNull @NonNull T defaultItem) Returns aFlowablethat emits the items emitted by the currentFlowableor a specified default item if the currentFlowableis empty.
- Backpressure:
- If the current
Flowableis empty, this operator is guaranteed to honor backpressure from downstream. If the currentFlowableis non-empty, it is expected to honor backpressure as well; if the rule is violated, aMissingBackpressureExceptionmay get signaled somewhere downstream. - Scheduler:
defaultIfEmptydoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the item to emit if the currentFlowableemits no items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
delay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> delay(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull U>> itemDelayIndicator) Returns aFlowablethat delays the emissions of the currentFlowablevia anotherFlow.Publisheron a per-item basis.
Note: the resulting
Flowablewill immediately propagate anyonErrornotification from the currentFlowable.- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. All of the otherPublishers supplied by the function are consumed in an unbounded manner (i.e., no backpressure applied to them). - Scheduler:
- This version of
delaydoes not operate by default on a particularScheduler.
- Type Parameters:
U- the item delay value type (ignored)- Parameters:
itemDelayIndicator- a function that returns aPublisherfor each item emitted by the currentFlowable, which is then used to delay the emission of that item by the resultingFlowableuntil thePublisherreturned fromitemDelayemits an item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemDelayIndicatorisnull- See Also:
-
delay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> delay(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay. TheonErrornotification from the currentFlowableis not delayed.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- This version of
delayoperates by default on thecomputationScheduler.
- Parameters:
time- the delay to shift the source byunit- theTimeUnitin whichperiodis defined- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
delay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> delay(long time, @NonNull @NonNull TimeUnit unit, boolean delayError) Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay. IfdelayErroristrue, error notifications will also be delayed.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- This version of
delayoperates by default on thecomputationScheduler.
- Parameters:
time- the delay to shift the source byunit- theTimeUnitin whichperiodis defineddelayError- iftrue, the upstream exception is signaled with the given delay, after all preceding normal elements, iffalse, the upstream exception is signaled immediately- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
delay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> delay(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay. TheonErrornotification from the currentFlowableis not delayed.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the delay to shift the source byunit- the time unit ofdelayscheduler- theSchedulerto use for delaying- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
delay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final @NonNull Flowable<T> delay(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError) Returns aFlowablethat emits the items emitted by the currentFlowableshifted forward in time by a specified delay. IfdelayErroristrue, error notifications will also be delayed.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the delay to shift the source byunit- the time unit ofdelayscheduler- theSchedulerto use for delayingdelayError- iftrue, the upstream exception is signaled with the given delay, after all preceding normal elements, iffalse, the upstream exception is signaled immediately- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
delay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull V> @NonNull Flowable<T> delay(@NonNull @NonNull Flow.Publisher<@NonNull U> subscriptionIndicator, @NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemDelayIndicator) Returns aFlowablethat delays the subscription to and emissions from the currentFlowablevia anotherFlow.Publisheron a per-item basis.
Note: the resulting
Flowablewill immediately propagate anyonErrornotification from the currentFlowable.- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. All of the otherPublishers supplied by the functions are consumed in an unbounded manner (i.e., no backpressure applied to them). - Scheduler:
- This version of
delaydoes not operate by default on a particularScheduler.
- Type Parameters:
U- the subscription delay value type (ignored)V- the item delay value type (ignored)- Parameters:
subscriptionIndicator- a function that returns aPublisherthat triggers the subscription to the currentFlowableonce it emits any itemitemDelayIndicator- a function that returns aPublisherfor each item emitted by the currentFlowable, which is then used to delay the emission of that item by the resultingFlowableuntil thePublisherreturned fromitemDelayemits an item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsubscriptionIndicatoranditemDelayIndicatorisnull- See Also:
-
delaySubscription
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> delaySubscription(@NonNull @NonNull Flow.Publisher<@NonNull U> subscriptionIndicator) Returns aFlowablethat delays the subscription to thisFlow.Publisheruntil the otherPublisheremits an element or completes normally.- Backpressure:
- The operator forwards the backpressure requests to this
Publisheronce the subscription happens and requestsLong.MAX_VALUEfrom the otherPublisher - Scheduler:
- This method does not operate by default on a particular
Scheduler.
- Type Parameters:
U- the value type of the otherPublisher, irrelevant- Parameters:
subscriptionIndicator- the otherPublisherthat should trigger the subscription to thisPublisher.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsubscriptionIndicatorisnull- Since:
- 2.0
-
delaySubscription
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> delaySubscription(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat delays the subscription to the currentFlowableby a given amount of time.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- This version of
delaySubscriptionoperates by default on thecomputationScheduler.
- Parameters:
time- the time to delay the subscriptionunit- the time unit ofdelay- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
delaySubscription
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> delaySubscription(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat delays the subscription to the currentFlowableby a given amount of time, both waiting and subscribing on a givenScheduler.
- Backpressure:
- The operator doesn't interfere with the backpressure behavior which is determined by the current
Flowable. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the time to delay the subscriptionunit- the time unit ofdelayscheduler- theScheduleron which the waiting and subscription will happen- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
dematerialize
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(PASS_THROUGH) public final <@NonNull R> @NonNull Flowable<R> dematerialize(@NonNull @NonNull Function<@NonNull ? super @NonNull T, @NonNull Notification<@NonNull R>> selector) Returns aFlowablethat reverses the effect ofmaterializeby transforming theNotificationobjects extracted from the source items via a selector function into their respectiveFlow.Subscribersignal types.
The intended use of the
selectorfunction is to perform a type-safe identity mapping (see example) on a source that is already of typeNotification<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
onErrororonCompleteitem, the returnedFlowablecancels of the flow and terminates with that type of terminal event:
If the upstream signalsFlowable.just(createOnNext(1), createOnComplete(), createOnNext(2)) .doOnCancel(() -> System.out.println("Canceled!")); .dematerialize(notification -> notification) .test() .assertResult(1);onErrororonCompletedirectly, the flow is terminated with the same event.
If this behavior is not desired, the completion can be suppressed by applyingFlowable.just(createOnNext(1), createOnNext(2)) .dematerialize(notification -> notification) .test() .assertResult(1, 2);concatWith(Publisher)with anever()source.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
dematerializedoes not operate by default on a particularScheduler.
History: 2.2.4 - experimental
- Type Parameters:
R- the output value type- Parameters:
selector- function that returns the upstream item and should return aNotificationto signal the correspondingSubscriberevent to the downstream.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnull- Since:
- 3.0.0
- See Also:
-
distinct
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> distinct()Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct based onObject.equals(Object)comparison.
It is recommended the elements' class
Tin the flow overrides the defaultObject.equals()andObject.hashCode()to provide a meaningful comparison between items as the default Java implementation only considers reference equivalence.By default,
distinct()uses an internalHashSetperFlow.Subscriberto remember previously seen items and usesSet.add(Object)returningfalseas the indicator for duplicates.Note that this internal
HashSetmay 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 toOutOfMemoryError.Customizing the retention policy can happen only by providing a custom
Collectionimplementation to thedistinct(Function, Supplier)overload.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
distinct
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Flowable<T> distinct(@NonNull @NonNull Function<? super @NonNull T, @NonNull K> keySelector) Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct according to a key selector function and based onObject.equals(Object)comparison of the objects returned by the key selector function.
It is recommended the keys' class
Koverrides the defaultObject.equals()andObject.hashCode()to provide a meaningful comparison between the key objects as the default Java implementation only considers reference equivalence.By default,
distinct()uses an internalHashSetperFlow.Subscriberto remember previously seen keys and usesSet.add(Object)returningfalseas the indicator for duplicates.Note that this internal
HashSetmay 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 toOutOfMemoryError.Customizing the retention policy can happen only by providing a custom
Collectionimplementation to thedistinct(Function, Supplier)overload.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type- Parameters:
keySelector- 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 not- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
distinct
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Flowable<T> distinct(@NonNull @NonNull Function<? super @NonNull T, @NonNull K> keySelector, @NonNull @NonNull Supplier<? extends Collection<? super @NonNull K>> collectionSupplier) Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct according to a key selector function and based onObject.equals(Object)comparison of the objects returned by the key selector function.
It is recommended the keys' class
Koverrides the defaultObject.equals()andObject.hashCode()to provide a meaningful comparison between the key objects as the default Java implementation only considers reference equivalence.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type- Parameters:
keySelector- 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 individualFlow.Subscriberto return aCollectionsubtype for holding the extracted keys and whose add() method's return indicates uniqueness.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectororcollectionSupplierisnull- See Also:
-
distinctUntilChanged
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> distinctUntilChanged()Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct from their immediate predecessors based onObject.equals(Object)comparison.
It is recommended the elements' class
Tin the flow overrides the defaultObject.equals()to provide a meaningful comparison between items as the default Java implementation only considers reference equivalence. Alternatively, use thedistinctUntilChanged(BiPredicate)overload and provide a comparison function in case the classTcan't be overridden with customequals()or the comparison itself should happen on different terms or properties of the classT.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
Tin 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 mutableCharSequences orLists where the objects will actually have the same references when they are modified anddistinctUntilChangedwill evaluate subsequent items as same. To avoid such situation, it is recommended that mutable data is converted to an immutable one, for example usingmap(CharSequence::toString)ormap(list -> Collections.unmodifiableList(new ArrayList<>(list))).- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctUntilChangeddoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
distinctUntilChanged
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Flowable<T> distinctUntilChanged(@NonNull @NonNull Function<? super @NonNull T, @NonNull K> keySelector) Returns aFlowablethat emits all items emitted by the currentFlowablethat are distinct from their immediate predecessors, according to a key selector function and based onObject.equals(Object)comparison of those objects returned by the key selector function.
It is recommended the keys' class
Koverrides the defaultObject.equals()to provide a meaningful comparison between the key objects as the default Java implementation only considers reference equivalence. Alternatively, use thedistinctUntilChanged(BiPredicate)overload and provide a comparison function in case the classKcan't be overridden with customequals()or the comparison itself should happen on different terms or properties of the item classT(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
Tin 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 mutableCharSequences orLists where the objects will actually have the same references when they are modified anddistinctUntilChangedwill evaluate subsequent items as same. To avoid such situation, it is recommended that mutable data is converted to an immutable one, for example usingmap(CharSequence::toString)ormap(list -> Collections.unmodifiableList(new ArrayList<>(list))).- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctUntilChangeddoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type- Parameters:
keySelector- 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 not- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
distinctUntilChanged
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> distinctUntilChanged(@NonNull @NonNull BiPredicate<? super @NonNull T, ? super @NonNull T> comparer) Returns aFlowablethat emits all items emitted by the currentFlowablethat 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
Tin 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 mutableCharSequences orLists where the objects will actually have the same references when they are modified anddistinctUntilChangedwill evaluate subsequent items as same. To avoid such situation, it is recommended that mutable data is converted to an immutable one, for example usingmap(CharSequence::toString)ormap(list -> Collections.unmodifiableList(new ArrayList<>(list))).- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
distinctUntilChangeddoes not operate by default on a particularScheduler.
- Parameters:
comparer- the function that receives the previous item and the current item and is expected to returntrueif the two are equal, thus skipping the current value.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifcomparerisnull- Since:
- 2.0
- See Also:
-
doFinally
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doFinally(@NonNull @NonNull Action onFinally) Calls the specified action after thisFlowablesignalsonErrororonCompleteor gets canceled by the downstream.In case of a race between a terminal event and a cancellation, the provided
onFinallyaction is executed once per subscription.Note that the
onFinallyaction is shared between subscriptions and as such should be thread-safe.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doFinallydoes not operate by default on a particularScheduler.- Operator-fusion:
- This operator supports normal and conditional
Flow.Subscribers as well as boundary-limited synchronous or asynchronous queue-fusion.
History: 2.0.1 - experimental
- Parameters:
onFinally- the action called when thisFlowableterminates or gets canceled- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonFinallyisnull- Since:
- 2.1
-
doAfterNext
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doAfterNext(@NonNull @NonNull Consumer<? super @NonNull T> onAfterNext) Calls the specified consumer with the current item after this item has been emitted to the downstream.Note that the
onAfterNextaction is shared between subscriptions and as such should be thread-safe.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doAfterNextdoes not operate by default on a particularScheduler.- Operator-fusion:
- This operator supports normal and conditional
Flow.Subscribers as well as boundary-limited synchronous or asynchronous queue-fusion.
History: 2.0.1 - experimental
- Parameters:
onAfterNext- theConsumerthat will be called after emitting an item from upstream to the downstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonAfterNextisnull- Since:
- 2.1
-
doAfterTerminate
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doAfterTerminate(@NonNull @NonNull Action onAfterTerminate) Registers anActionto be called when thisFlow.Publisherinvokes eitheronCompleteoronError.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doAfterTerminatedoes not operate by default on a particularScheduler.
- Parameters:
onAfterTerminate- anActionto be invoked when the currentFlowablefinishes- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonAfterTerminateisnull- See Also:
-
doOnCancel
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnCancel(@NonNull @NonNull Action onCancel) Calls the cancelActionif the downstream cancels 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
onCancel()call, sometimes as aCompositeExceptionif there were multiple exceptions along the way.- Backpressure:
doOnCanceldoes not interact with backpressure requests or value delivery; backpressure behavior is preserved between its upstream and its downstream.- Scheduler:
doOnCanceldoes not operate by default on a particularScheduler.
- Parameters:
onCancel- the action that gets called when the currentFlowable'sFlow.Subscriptionis canceled- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonCancelisnull- See Also:
-
doOnComplete
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnComplete(@NonNull @NonNull Action onComplete) Invokes anActionjust before the currentFlowablecallsonComplete.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnCompletedoes not operate by default on a particularScheduler.
- Parameters:
onComplete- the action to invoke when the currentFlowablecallsonComplete- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonCompleteisnull- See Also:
-
doOnEach
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> doOnEach(@NonNull @NonNull Consumer<@NonNull ? super Notification<@NonNull T>> onNotification) Invokes aConsumerwith aNotificationinstances matching the signals emitted by the currentFlowablebefore they are forwarded to the downstream.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnEachdoes not operate by default on a particularScheduler.
- Parameters:
onNotification- the action to invoke for each item emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonNotificationisnull- See Also:
-
doOnEach
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> doOnEach(@NonNull @NonNull Flow.Subscriber<? super @NonNull T> subscriber) Calls the appropriate methods of the givenFlow.Subscriberwhen the currentFlowablesignals events before forwarding it to the downstream.In case the
onErrorof the suppliedSubscriberthrows, the downstream will receive a composite exception containing the original exception and the exception thrown byonError. If either theonNextor theonCompletemethod of the suppliedSubscriberthrows, the downstream will be terminated and will receive this thrown exception.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnEachdoes not operate by default on a particularScheduler.
- Parameters:
subscriber- theSubscriberto be notified aboutonNext,onErrorandonCompleteevents on its respective methods before the actual downstreamSubscribergets notified.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsubscriberisnull- See Also:
-
doOnError
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnError(@NonNull @NonNull Consumer<? super Throwable> onError) Calls the givenConsumerwith the errorThrowableif the currentFlowablefailed before forwarding it to the downstream.In case the
onErroraction throws, the downstream will receive a composite exception containing the original exception and the exception thrown byonError.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnErrordoes not operate by default on a particularScheduler.
- Parameters:
onError- the action to invoke if the currentFlowablecallsonError- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonErrorisnull- See Also:
-
doOnLifecycle
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> doOnLifecycle(@NonNull @NonNull Consumer<? super Flow.Subscription> onSubscribe, @NonNull @NonNull LongConsumer onRequest, @NonNull @NonNull Action onCancel) Calls the appropriateonXXXmethod (shared between allFlow.Subscribers) for the lifecycle events of the sequence (subscription, cancellation, requesting).
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnLifecycledoes not operate by default on a particularScheduler.
- Parameters:
onSubscribe- aConsumercalled with theFlow.Subscriptionsent viaFlow.Subscriber.onSubscribe(Subscription)onRequest- aLongConsumercalled with the request amount sent viaFlow.Subscription.request(long)onCancel- called when the downstream cancels theSubscriptionviaFlow.Subscription.cancel()- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonSubscribe,onRequestoronCancelisnull- See Also:
-
doOnNext
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnNext(@NonNull @NonNull Consumer<? super @NonNull T> onNext) Calls the givenConsumerwith the value emitted by the currentFlowablebefore forwarding it to the downstream.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnNextdoes not operate by default on a particularScheduler.
- Parameters:
onNext- the action to invoke when the currentFlowablecallsonNext- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonNextisnull- See Also:
-
doOnRequest
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnRequest(@NonNull @NonNull LongConsumer onRequest) Calls the givenLongConsumerwith the request amount from the downstream before forwarding it to the currentFlowable.Note: This operator is for tracing the internal behavior of back-pressure request patterns and generally intended for debugging use.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnRequestdoes not operate by default on a particularScheduler.
- Parameters:
onRequest- the action that gets called when aFlow.Subscriberrequests items from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonRequestisnull- Since:
- 2.0
- See Also:
-
doOnSubscribe
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnSubscribe(@NonNull @NonNull Consumer<? super Flow.Subscription> onSubscribe) Calls the givenConsumerwith theFlow.Subscriptionprovided by the currentFlowableupon subscription from the downstream before forwarding it to the subscriber'sonSubscribemethod.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnSubscribedoes not operate by default on a particularScheduler.
- Parameters:
onSubscribe- theConsumerthat gets called when aFlow.Subscribersubscribes to the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonSubscribeisnull- See Also:
-
doOnTerminate
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> doOnTerminate(@NonNull @NonNull Action onTerminate) Calls the givenActionwhen the currentFlowablecompletes normally or with an error before those signals are forwarded to the downstream.
This differs from
doAfterTerminatein that this happens before theonCompleteoronErrornotification.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
doOnTerminatedoes not operate by default on a particularScheduler.
- Parameters:
onTerminate- the action to invoke when the currentFlowablecallsonCompleteoronError- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonTerminateisnull- See Also:
-
elementAt
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Maybe<T> elementAt(long index) Returns aMaybethat emits the single item at a specified index in a sequence of emissions from thisFlowableor completes if thisFlowablesequence has fewer elements than index.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
elementAtdoes not operate by default on a particularScheduler.
- Parameters:
index- the zero-based index of the item to retrieve- Returns:
- the new
Maybeinstance - Throws:
IndexOutOfBoundsException- ifindexis negative- See Also:
-
elementAt
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Single<T> elementAt(long index, @NonNull @NonNull T defaultItem) Returns aSinglethat emits the item found at a specified index in a sequence of emissions from thisFlowable, or a default item if that index is out of range.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
elementAtdoes not operate by default on a particularScheduler.
- Parameters:
index- the zero-based index of the item to retrievedefaultItem- the default item- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifdefaultItemisnullIndexOutOfBoundsException- ifindexis negative- See Also:
-
elementAtOrError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Single<T> elementAtOrError(long index) Returns aSinglethat emits the item found at a specified index in a sequence of emissions from thisFlowableor signals aNoSuchElementExceptionif thisFlowablehas fewer elements than index.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
elementAtOrErrordoes not operate by default on a particularScheduler.
- Parameters:
index- the zero-based index of the item to retrieve- Returns:
- the new
Singleinstance - Throws:
IndexOutOfBoundsException- ifindexis less than 0- See Also:
-
filter
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> filter(@NonNull @NonNull Predicate<? super @NonNull T> predicate) Filters items emitted by the currentFlowableby only emitting those that satisfy a specified predicate.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
filterdoes not operate by default on a particularScheduler.
- Parameters:
predicate- a function that evaluates each item emitted by the currentFlowable, returningtrueif it passes the filter- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
firstElement
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Maybe<T> firstElement()Returns aMaybethat emits only the very first item emitted by thisFlowableor completes if thisFlowableis empty.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
firstElementdoes not operate by default on a particularScheduler.
- Returns:
- the new
Maybeinstance - See Also:
-
first
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Single<T> first(@NonNull @NonNull T defaultItem) Returns aSinglethat emits only the very first item emitted by thisFlowable, or a default item if thisFlowablecompletes without emitting anything.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
firstdoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the default item to emit if the currentFlowabledoesn't emit anything- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
firstOrError
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Single<T> firstOrError()Returns aSinglethat emits only the very first item emitted by thisFlowableor signals aNoSuchElementExceptionif thisFlowableis empty.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein a bounded manner. - Scheduler:
firstOrErrordoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger.
- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tobufferSize()outstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the innerPublishers and the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger.
- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tobufferSize()outstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the innerPublishers and the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherdelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediately- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int maxConcurrency) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the innerPublishers and the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublishermaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the innerPublishers and the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherdelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediatelymaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency, int bufferSize) Returns aFlowablethat emits items based on applying a function that you supply to each item emitted by the currentFlowable, where that function returns aFlow.Publisher, and then merging those resultingPublishers and emitting the results of this merger, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the value type of the innerPublishers and the output type- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherdelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediatelymaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of elements to prefetch from each innerPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onNextMapper, @NonNull @NonNull Function<? super Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onErrorMapper, @NonNull @NonNull Supplier<? extends Flow.Publisher<? extends @NonNull R>> onCompleteSupplier) Returns aFlowablethat applies a function to each item emitted or notification raised by the currentFlowableand then flattens theFlow.Publishers returned from these functions and emits the resulting items.
- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tobufferSize()outstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result type- Parameters:
onNextMapper- a function that returns aPublisherto merge for each item emitted by the currentFlowableonErrorMapper- a function that returns aPublisherto merge for anonErrornotification from the currentFlowableonCompleteSupplier- a function that returns aPublisherto merge for anonCompletenotification from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonNextMapper,onErrorMapperoronCompleteSupplierisnull- See Also:
-
flatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onNextMapper, @NonNull @NonNull Function<Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> onErrorMapper, @NonNull @NonNull Supplier<? extends Flow.Publisher<? extends @NonNull R>> onCompleteSupplier, int maxConcurrency) Returns aFlowablethat applies a function to each item emitted or notification raised by the currentFlowableand then flattens theFlow.Publishers returned from these functions and emits the resulting items, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result type- Parameters:
onNextMapper- a function that returns aPublisherto merge for each item emitted by the currentFlowableonErrorMapper- a function that returns aPublisherto merge for anonErrornotification from the currentFlowableonCompleteSupplier- a function that returns aPublisherto merge for anonCompletenotification from the currentFlowablemaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonNextMapper,onErrorMapperoronCompleteSupplierisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher.
- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by the innerPublishersR- the type of items emitted by the combiner function- Parameters:
mapper- a function that returns aPublisherfor each item emitted by the currentFlowablecombiner- a function that combines one item emitted by each of the source and collectionPublishers and returns an item to be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnull- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified innerFlow.Publisher.
- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tobufferSize()outstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by the innerPublishersR- the type of items emitted by the combiner functions- Parameters:
mapper- a function that returns aPublisherfor each item emitted by the currentFlowablecombiner- a function that combines one item emitted by each of the source and collectionPublishers and returns an item to be emitted by the resultingFlowabledelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediately- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnull- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors, int maxConcurrency) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by the innerPublishersR- the type of items emitted by the combiner function- Parameters:
mapper- a function that returns aPublisherfor each item emitted by the currentFlowablecombiner- a function that combines one item emitted by each of the source and collectionPublishers and returns an item to be emitted by the resultingFlowabledelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediatelymaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, boolean delayErrors, int maxConcurrency, int bufferSize) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tomaxConcurrencyoutstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by the innerPublishersR- the type of items emitted by the combiner function- Parameters:
mapper- a function that returns aPublisherfor each item emitted by the currentFlowablecombiner- a function that combines one item emitted by each of the source and collectionPublishers and returns an item to be emitted by the resultingFlowabledelayErrors- iftrue, exceptions from the currentFlowableand all innerPublishers are delayed until all of them terminate iffalse, the first one signaling an exception will terminate the whole sequence immediatelymaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrentlybufferSize- the number of elements to prefetch from the innerPublishers.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnullIllegalArgumentException- ifmaxConcurrencyorbufferSizeis non-positive- Since:
- 2.0
- See Also:
-
flatMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> flatMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner, int maxConcurrency) Returns aFlowablethat emits the results of a specified function to the pair of values emitted by the currentFlowableand a specified collectionFlow.Publisher, while limiting the maximum number of concurrent subscriptions to thesePublishers.- Backpressure:
- The operator honors backpressure from downstream. The upstream
Flowableis consumed in a bounded manner (up tobufferSize()outstanding request amount for items). The innerPublishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
flatMapdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by the innerPublishersR- the type of items emitted by the combiner function- Parameters:
mapper- a function that returns aPublisherfor each item emitted by the currentFlowablecombiner- a function that combines one item emitted by each of the source and collectionPublishers and returns an item to be emitted by the resultingFlowablemaxConcurrency- the maximum number ofPublishers that may be subscribed to concurrently- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnullIllegalArgumentException- ifmaxConcurrencyis non-positive- Since:
- 2.0
- See Also:
-
flatMapCompletable
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Completable flatMapCompletable(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps each element of the upstreamFlowableintoCompletableSources, subscribes to them and waits until the upstream and allCompletableSources complete.- Backpressure:
- The operator consumes the upstream in an unbounded manner.
- Scheduler:
flatMapCompletabledoes not operate by default on a particularScheduler.
- Parameters:
mapper- the function that received each source value and transforms them intoCompletableSources.- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull
-
flatMapCompletable
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Completable flatMapCompletable(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoCompletableSources, subscribes to them and waits until the upstream and allCompletableSources complete, optionally delaying all errors.- Backpressure:
- If
maxConcurrency ==Integer.MAX_VALUEthe operator consumes the upstream in an unbounded manner. Otherwise, the operator expects the upstream to honor backpressure. If the upstream doesn't support backpressure the operator behaves as ifmaxConcurrency ==Integer.MAX_VALUEwas used. - Scheduler:
flatMapCompletabledoes not operate by default on a particularScheduler.
- Parameters:
mapper- the function that received each source value and transforms them intoCompletableSources.delayErrors- iftrue, errors from the upstream and innerCompletableSources are delayed until each of them terminates.maxConcurrency- the maximum number of active subscriptions to theCompletableSources.- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyis non-positive
-
flatMapIterable
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U> @NonNull Flowable<U> flatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowables is expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
flatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the output type and the element type of theIterables- Parameters:
mapper- a function that returns anIterablesequence of values for when given an item emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
flatMapIterable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<U> flatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, int bufferSize) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowables is expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
flatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of item emitted by the resultingIterable- Parameters:
mapper- a function that returns anIterablesequence of values for when given an item emitted by the currentFlowablebufferSize- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
flatMapIterable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull V> @NonNull Flowable<V> flatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull V> combiner) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence where the resulting items will be the combination of the original item and each inner item of the respectiveIterableas returned by theresultSelectorBiFunction.
- Backpressure:
- The operator honors backpressure from downstream and the current
Flowables is consumed in a bounded manner (requestingbufferSize()items upfront, then 75% of it after 75% received). - Scheduler:
flatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of theIterablesV- the output type as determined by theresultSelectorfunction- Parameters:
mapper- a function that returns anIterablesequence of values for each item emitted by the currentFlowablecombiner- a function that returns an item based on the item emitted by the currentFlowableand theIterablereturned for that item by thecollectionSelector- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnull- See Also:
-
flatMapIterable
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull V> @NonNull Flowable<V> flatMapIterable(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Iterable<? extends @NonNull U>> mapper, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull V> combiner, int prefetch) MergesIterables generated by a mapperFunctionfor each individual item emitted by the currentFlowableinto a singleFlowablesequence where the resulting items will be the combination of the original item and each inner item of the respectiveIterableas returned by theresultSelectorBiFunction.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowables is expected to honor backpressure as well. If the currentFlowableviolates the rule, the operator will signal aMissingBackpressureException. - Scheduler:
flatMapIterabledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of the innerIterablesequencesV- the type of item emitted by the resultingFlowable- Parameters:
mapper- a function that returns anIterablesequence of values for when given an item emitted by the currentFlowablecombiner- a function that returns an item based on the item emitted by the currentFlowableand theIterablereturned for that item by thecollectionSelectorprefetch- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperorcombinerisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 2.0
- See Also:
-
flatMapMaybe
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMapMaybe(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps each element of the upstreamFlowableintoMaybeSources, subscribes to all of them and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence.
- Backpressure:
- The operator consumes the upstream in an unbounded manner.
- Scheduler:
flatMapMaybedoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that received each source value and transforms them intoMaybeSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull
-
flatMapMaybe
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> flatMapMaybe(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoMaybeSources, subscribes to at mostmaxConcurrencyMaybeSources at a time and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence, optionally delaying all errors.
- Backpressure:
- If
maxConcurrency ==Integer.MAX_VALUEthe operator consumes the upstream in an unbounded manner. Otherwise, the operator expects the upstream to honor backpressure. If the upstream doesn't support backpressure the operator behaves as ifmaxConcurrency ==Integer.MAX_VALUEwas used. - Scheduler:
flatMapMaybedoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that received each source value and transforms them intoMaybeSources.delayErrors- iftrue, errors from the upstream and innerMaybeSources are delayed until each of them terminates.maxConcurrency- the maximum number of active subscriptions to theMaybeSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyis non-positive
-
flatMapSingle
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMapSingle(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps each element of the upstreamFlowableintoSingleSources, subscribes to all of them and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence.- Backpressure:
- The operator consumes the upstream in an unbounded manner.
- Scheduler:
flatMapSingledoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that received each source value and transforms them intoSingleSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull
-
flatMapSingle
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> flatMapSingle(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper, boolean delayErrors, int maxConcurrency) Maps each element of the upstreamFlowableintoSingleSources, subscribes to at mostmaxConcurrencySingleSources at a time and merges theironSuccessvalues, in no particular order, into a singleFlowablesequence, optionally delaying all errors.- Backpressure:
- If
maxConcurrency ==Integer.MAX_VALUEthe operator consumes the upstream in an unbounded manner. Otherwise, the operator expects the upstream to honor backpressure. If the upstream doesn't support backpressure the operator behaves as ifmaxConcurrency ==Integer.MAX_VALUEwas used. - Scheduler:
flatMapSingledoes not operate by default on a particularScheduler.
- Type Parameters:
R- the result value type- Parameters:
mapper- the function that received each source value and transforms them intoSingleSources.delayErrors- iftrue, errors from the upstream and innerSingleSourcesare delayed until each of them terminates.maxConcurrency- the maximum number of active subscriptions to theSingleSources.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifmaxConcurrencyis non-positive
-
forEach
@CheckReturnValue @BackpressureSupport(NONE) @SchedulerSupport("none") @NonNull public final @NonNull Disposable forEach(@NonNull @NonNull Consumer<? super @NonNull T> onNext) Subscribes to the currentFlowableand receives notifications for each element.Alias to
subscribe(Consumer)- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
forEachdoes not operate by default on a particularScheduler.
- Parameters:
onNext-Consumerto execute for each item.- Returns:
- a
Disposablethat allows canceling an asynchronous sequence - Throws:
NullPointerException- ifonNextisnull- See Also:
-
forEachWhile
@CheckReturnValue @BackpressureSupport(NONE) @SchedulerSupport("none") @NonNull public final @NonNull Disposable forEachWhile(@NonNull @NonNull Predicate<? super @NonNull T> onNext) Subscribes to the currentFlowableand receives notifications for each element until theonNextPredicate returnsfalse.If the
Flowableemits an error, it is wrapped into anOnErrorNotImplementedExceptionand routed to theRxJavaPlugins.onError(Throwable)handler.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
forEachWhiledoes not operate by default on a particularScheduler.
- Parameters:
onNext-Predicateto execute for each item.- Returns:
- a
Disposablethat allows canceling an asynchronous sequence - Throws:
NullPointerException- ifonNextisnull- See Also:
-
forEachWhile
@CheckReturnValue @BackpressureSupport(NONE) @SchedulerSupport("none") @NonNull public final @NonNull Disposable forEachWhile(@NonNull @NonNull Predicate<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError) Subscribes to the currentFlowableand receives notifications for each element and error events until theonNextPredicate returnsfalse.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
forEachWhiledoes not operate by default on a particularScheduler.
- Parameters:
onNext-Predicateto execute for each item.onError-Consumerto execute when an error is emitted.- Returns:
- a
Disposablethat allows canceling an asynchronous sequence - Throws:
NullPointerException- ifonNextoronErrorisnull- See Also:
-
forEachWhile
@CheckReturnValue @NonNull @BackpressureSupport(NONE) @SchedulerSupport("none") public final @NonNull Disposable forEachWhile(@NonNull @NonNull Predicate<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete) Subscribes to the currentFlowableand receives notifications for each element and the terminal events until theonNextPredicate returnsfalse.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
forEachWhiledoes not operate by default on a particularScheduler.
- Parameters:
onNext-Predicateto execute for each item.onError-Consumerto execute when an error is emitted.onComplete-Actionto execute when completion is signaled.- Returns:
- a
Disposablethat allows canceling an asynchronous sequence - Throws:
NullPointerException- ifonNext,onErrororonCompleteisnull- See Also:
-
groupBy
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Flowable<GroupedFlowable<K,T>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission.
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
- Type Parameters:
K- the key type- Parameters:
keySelector- a function that extracts the key for each item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
groupBy
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Flowable<GroupedFlowable<K,T>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, boolean delayError) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission.
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
- Type Parameters:
K- the key type- Parameters:
keySelector- a function that extracts the key for each itemdelayError- iftrue, the exception from the currentFlowableis delayed in each group until that specific group emitted the normal values; iffalse, the exception bypasses values in the groups and is reported immediately.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
groupBy
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull K, @NonNull V> @NonNull Flowable<GroupedFlowable<K,V>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission.
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
- Type Parameters:
K- the key typeV- the element type- Parameters:
keySelector- a function that extracts the key for each itemvalueSelector- a function that extracts the return element for each item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectororvalueSelectorisnull- See Also:
-
groupBy
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull K, @NonNull V> @NonNull Flowable<GroupedFlowable<K,V>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission.
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
- Type Parameters:
K- the key typeV- the element type- Parameters:
keySelector- a function that extracts the key for each itemvalueSelector- a function that extracts the return element for each itemdelayError- iftrue, the exception from the currentFlowableis delayed in each group until that specific group emitted the normal values; iffalse, the exception bypasses values in the groups and is reported immediately.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectororvalueSelectorisnull- See Also:
-
groupBy
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final <@NonNull K, @NonNull V> @NonNull Flowable<GroupedFlowable<K,V>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError, int bufferSize) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission.
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
- Type Parameters:
K- the key typeV- the element type- Parameters:
keySelector- a function that extracts the key for each itemvalueSelector- a function that extracts the return element for each itemdelayError- iftrue, the exception from the currentFlowableis delayed in each group until that specific group emitted the normal values; iffalse, the exception bypasses values in the groups and is reported immediately.bufferSize- the hint for how manyGroupedFlowables and element in eachGroupedFlowableshould be buffered- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelectororvalueSelectorisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
groupBy
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final <@NonNull K, @NonNull V> @NonNull Flowable<GroupedFlowable<K,V>> groupBy(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, boolean delayError, int bufferSize, @NonNull @NonNull Function<? super Consumer<Object>, ? extends Map<@NonNull K, Object>> evictingMapFactory) Groups the items emitted by the currentFlowableaccording to a specified criterion, and emits these grouped items asGroupedFlowables. The emittedGroupedFlowableallows only a singleFlow.Subscriberduring its lifetime and if thisSubscribercancels before the source terminates, the next emission by the source having the same key will trigger a newGroupedFlowableemission. TheevictingMapFactoryis used to create a map that will be used to hold theGroupedFlowables by key. The evicting map created by this factory must notify the providedConsumer<Object>with the entry value (not the key!) when an entry in this map has been evicted. The next source emission will bring about the completion of the evictedGroupedFlowables and the arrival of an item with the same key as a completedGroupedFlowablewill prompt the creation and emission of a newGroupedFlowablewith that key.A use case for specifying an
evictingMapFactoryis where the source is infinite and fast and over time the number of keys grows enough to be a concern in terms of the memory footprint of the internal hash map containing theGroupedFlowables.The map created by an
evictingMapFactorymust be thread-safe.An example of an
evictingMapFactoryusing CacheBuilder from the Guava library is below:Function<Consumer<Object>, Map<Integer, Object>> evictingMapFactory = notify -> CacheBuilder .newBuilder() .maximumSize(3) .removalListener(entry -> { try { // emit the value not the key! notify.accept(entry.getValue()); } catch (Exception e) { throw new RuntimeException(e); } }) .<Integer, Object> build() .asMap(); // Emit 1000 items but ensure that the // internal map never has more than 3 items in it Flowable .range(1, 1000) // note that number of keys is 10 .groupBy(x -> x % 10, x -> x, true, 16, evictingMapFactory) .flatMap(g -> g) .forEach(System.out::println);
Note: A
GroupedFlowablewill 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 thoseGroupedFlowables that do not concern you. Instead, you can signal to them that they may discard their buffers by applying an operator likeignoreElements()to them.Note that the
GroupedFlowables should be subscribed to as soon as possible, otherwise, the unconsumed groups may starve other groups due to the internal backpressure coordination of thegroupByoperator. Such hangs can be usually avoided by usingflatMap(Function, int)orconcatMapEager(Function, int, int)and overriding the default maximum concurrency value to be greater or equal to the expected number of groups, possibly usingInteger.MAX_VALUEif the number of expected groups is unknown.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.
- Backpressure:
- The consumer of the returned
Flowablehas to be ready to receive newGroupedFlowables or else this operator will signalMissingBackpressureException. To avoid this exception, make sure a combining operator (such asflatMap) has adequate amount of buffering/prefetch configured. The innerGroupedFlowables honor backpressure but due to the single-source multiple consumer nature of this operator, each group must be consumed so the whole operator can make progress and not hang. - Scheduler:
groupBydoes not operate by default on a particularScheduler.- Error handling:
- If the upstream signals or the callback(s) throw an exception, the returned
Flowableand all active innerGroupedFlowables will signal the same exception.
History: 2.1.10 - beta
- Type Parameters:
K- the key typeV- the element type- Parameters:
keySelector- a function that extracts the key for each itemvalueSelector- a function that extracts the return element for each itemdelayError- iftrue, the exception from the currentFlowableis delayed in each group until that specific group emitted the normal values; iffalse, the exception bypasses values in the groups and is reported immediately.bufferSize- the hint for how manyGroupedFlowables and element in eachGroupedFlowableshould be bufferedevictingMapFactory- The factory used to create a map that will be used by the implementation to hold theGroupedFlowables. The evicting map created by this factory must notify the providedConsumer<Object>with the entry value (not the key!) when an entry in this map has been evicted. The next source emission will bring about the completion of the evictedGroupedFlowables. See example above.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifkeySelector,valueSelectororevictingMapFactoryisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.2
- See Also:
-
groupJoin
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull TRight, @NonNull TLeftEnd, @NonNull TRightEnd, @NonNull R> @NonNull Flowable<R> groupJoin(@NonNull @NonNull Flow.Publisher<? extends @NonNull TRight> other, @NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull TLeftEnd>> leftEnd, @NonNull @NonNull Function<? super @NonNull TRight, @NonNull ? extends Flow.Publisher<@NonNull TRightEnd>> rightEnd, @NonNull @NonNull BiFunction<? super @NonNull T, ? super Flowable<@NonNull TRight>, ? extends @NonNull R> resultSelector) Returns aFlowablethat correlates twoFlow.Publishers 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
Publishers overlap.
- Backpressure:
- The operator doesn't support backpressure and consumes all participating
Publishers in an unbounded mode (i.e., not applying any backpressure to them). - Scheduler:
groupJoindoes not operate by default on a particularScheduler.
- Type Parameters:
TRight- the value type of the rightPublishersourceTLeftEnd- the element type of the left durationPublishersTRightEnd- the element type of the right durationPublishersR- the result type- Parameters:
other- the otherPublisherto correlate items from the currentFlowablewithleftEnd- a function that returns aPublisherwhose emissions indicate the duration of the values of the currentFlowablerightEnd- a function that returns aPublisherwhose emissions indicate the duration of the values of therightPublisherresultSelector- a function that takes an item emitted by eachPublisherand returns the value to be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifother,leftEnd,rightEndorresultSelectorisnull- See Also:
-
hide
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> hide()Hides the identity of thisFlowableand itsFlow.Subscription.Allows hiding extra features such as
Flow.Processor'sFlow.Subscribermethods or preventing certain identity-based optimizations (fusion).- Backpressure:
- The operator is a pass-through for backpressure, the behavior is determined by the upstream's backpressure behavior.
- Scheduler:
hidedoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - Since:
- 2.0
-
ignoreElements
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Completable ignoreElements()Ignores all items emitted by the currentFlowableand only callsonCompleteoronError.
- Backpressure:
- This operator ignores backpressure as it doesn't emit any elements and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
ignoreElementsdoes not operate by default on a particularScheduler.
- Returns:
- the new
Completableinstance - See Also:
-
isEmpty
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<Boolean> isEmpty()Returns aSinglethat emitstrueif the currentFlowableis empty, otherwisefalse.In Rx.Net this is negated as the
anyFlow.Subscriberbut we renamed this in RxJava to better match Java naming idioms.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
isEmptydoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
join
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull TRight, @NonNull TLeftEnd, @NonNull TRightEnd, @NonNull R> @NonNull Flowable<R> join(@NonNull @NonNull Flow.Publisher<? extends @NonNull TRight> other, @NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull TLeftEnd>> leftEnd, @NonNull @NonNull Function<? super @NonNull TRight, @NonNull ? extends Flow.Publisher<@NonNull TRightEnd>> rightEnd, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull TRight, ? extends @NonNull R> resultSelector) Correlates the items emitted by twoFlow.Publishers based on overlapping durations.There are no guarantees in what order the items get combined when multiple items from one or both source
Publishers overlap.
- Backpressure:
- The operator doesn't support backpressure and consumes all participating
Publishers in an unbounded mode (i.e., not applying any backpressure to them). - Scheduler:
joindoes not operate by default on a particularScheduler.
- Type Parameters:
TRight- the value type of the rightPublishersourceTLeftEnd- the element type of the left durationPublishersTRightEnd- the element type of the right durationPublishersR- the result type- Parameters:
other- the secondPublisherto join items fromleftEnd- a function to select a duration for each item emitted by the currentFlowable, used to determine overlaprightEnd- a function to select a duration for each item emitted by therightPublisher, used to determine overlapresultSelector- a function that computes an item to be emitted by the resultingFlowablefor any two overlapping items emitted by the twoPublishers- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifother,leftEnd,rightEndorresultSelectorisnull- See Also:
-
lastElement
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Maybe<T> lastElement()Returns aMaybethat emits the last item emitted by thisFlowableor completes if thisFlowableis empty.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
lastElementdoes not operate by default on a particularScheduler.
- Returns:
- the new
Maybeinstance - See Also:
-
last
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<T> last(@NonNull @NonNull T defaultItem) Returns aSinglethat emits only the last item emitted by thisFlowable, or a default item if thisFlowablecompletes without emitting any items.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
lastdoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the default item to emit if the currentFlowableis empty- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
lastOrError
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<T> lastOrError()Returns aSinglethat emits only the last item emitted by thisFlowableor signals aNoSuchElementExceptionif thisFlowableis empty.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
lastOrErrordoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
lift
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> lift(@NonNull @NonNull FlowableOperator<? extends @NonNull R, ? super @NonNull T> lifter) This method requires advanced knowledge about building operators, please consider other standard composition methods first; Returns aFlowablewhich, when subscribed to, invokes theapply(Subscriber)method of the providedFlowableOperatorfor each individual downstreamFlow.Subscriberand allows the insertion of a custom operator by accessing the downstream'sSubscriberduring this subscription phase and providing a newSubscriber, containing the custom operator's intended business logic, that will be used in the subscription process going further upstream.Generally, such a new
Subscriberwill wrap the downstream'sSubscriberand forwards theonNext,onErrorandonCompleteevents 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 ofcancelandrequestthat 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 FlowableOperator.apply(): public final class CustomSubscriber<T> implements FlowableSubscriber<T>, Subscription { // The downstream's Subscriber that will receive the onXXX events final Subscriber<? super String> downstream; // The connection to the upstream source that will call this class' onXXX methods Subscription upstream; // The constructor takes the downstream subscriber and usually any other parameters public CustomSubscriber(Subscriber<? super String> downstream) { this.downstream = downstream; } // In the subscription phase, the upstream sends a Subscription to this class // and subsequently this class has to send a Subscription to the downstream. // Note that relaying the upstream's Subscription instance directly is not allowed in RxJava @Override public void onSubscribe(Subscription s) { if (upstream != null) { s.cancel(); } else { upstream = s; 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); } else { upstream.request(1); } } // 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 have to intercept the downstream's request calls to trigger // the emission of queued items while others can simply forward the request // amount as is. @Override public void request(long n) { upstream.request(n); } // Some operators may use their own resources which should be cleaned up if // the downstream cancels the flow before it completed. Operators without // resources can simply forward the cancellation to the upstream. // In some cases, a canceled flag may be set by this method so that other parts // of this class may detect the cancellation and stop sending events // to the downstream. @Override public void cancel() { upstream.cancel(); } } // Step 2: Create a class that implements the FlowableOperator 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 FlowableOperator<String> { @Override public Subscriber<? super String> apply(Subscriber<? super T> upstream) { return new CustomSubscriber<T>(upstream); } } // Step 3: Apply the custom operator via lift() in a flow by creating an instance of it // or reusing an existing one. Flowable.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 abstractFlowableclass and creating aFlowableTransformerwith it is recommended.Note also that it is not possible to stop the subscription phase in
lift()as theapply()method requires a non-nullSubscriberinstance to be returned, which is then unconditionally subscribed to the upstreamFlowable. 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 aSubscriberthat should immediately cancel the upstream'sFlow.Subscriptionin itsonSubscribemethod. Again, using aFlowableTransformerand extending theFlowableis a better option assubscribeActual(Flow.Subscriber)can decide to not subscribe to its upstream after all.- Backpressure:
- The
Subscriberinstance returned by theFlowableOperatoris responsible to be backpressure-aware or document the fact that the consumer of the returnedFlow.Publisherhas to apply one of theonBackpressureXXXoperators. - Scheduler:
liftdoes not operate by default on a particularScheduler, however, theFlowableOperatormay use aSchedulerto support its own asynchronous behavior.
- Type Parameters:
R- the output value type- Parameters:
lifter- theFlowableOperatorthat receives the downstream'sSubscriberand should return aSubscriberwith custom behavior to be used as the consumer for the currentFlowable.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iflifterisnull- See Also:
-
map
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> map(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull R> mapper) Returns aFlowablethat applies a specified function to each item emitted by the currentFlowableand emits the results of these function applications.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
mapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the output type- Parameters:
mapper- a function to apply to each item emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
materialize
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Notification<T>> materialize()Returns aFlowablethat represents all of the emissions and notifications from the currentFlowableinto emissions marked with their original types withinNotificationobjects.
- Backpressure:
- The operator honors backpressure from downstream and expects it from the current
Flowable. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
materializedoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
mergeWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> mergeWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> other) Flattens this and anotherFlow.Publisherinto a singlePublisher, without any transformation.
You can combine items emitted by multiple
Publishers so that they appear as a singlePublisher, by using themergeWithmethod.- Backpressure:
- The operator honors backpressure from downstream. This and the other
Publishers are expected to honor backpressure; if violated, the operator may signalMissingBackpressureException. - Scheduler:
mergeWithdoes not operate by default on a particularScheduler.
- Parameters:
other- aPublisherto be merged- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
mergeWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> mergeWith(@NonNull @NonNull SingleSource<? extends @NonNull T> other) Merges the sequence of items of thisFlowablewith the success value of the otherSingleSource.
The success value of the other
SingleSourcecan get interleaved at any point of thisFlowablesequence.- Backpressure:
- The operator honors backpressure from downstream and ensures the success item from the
SingleSourceis emitted only when there is a downstream demand. - Scheduler:
mergeWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theSingleSourcewhose success value to merge with- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
mergeWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> mergeWith(@NonNull @NonNull MaybeSource<? extends @NonNull T> other) Merges the sequence of items of thisFlowablewith the success value of the otherMaybeSourceor waits for both to complete normally if theMaybeSourceis empty.
The success value of the other
MaybeSourcecan get interleaved at any point of thisFlowablesequence.- Backpressure:
- The operator honors backpressure from downstream and ensures the success item from the
MaybeSourceis emitted only when there is a downstream demand. - Scheduler:
mergeWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theMaybeSourcewhich provides a success value to merge with or completes- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
mergeWith
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> mergeWith(@NonNull @NonNull CompletableSource other) Relays the items of thisFlowableand completes only when the otherCompletableSourcecompletes as well.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
mergeWithdoes not operate by default on a particularScheduler.
History: 2.1.10 - experimental
- Parameters:
other- theCompletableSourceto await for completion- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 2.2
-
observeOn
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> observeOn(@NonNull @NonNull Scheduler scheduler) Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer ofbufferSize()slots.Note that
onErrornotifications will cut ahead ofonNextnotifications on the emission thread ifScheduleris truly asynchronous. If strict event ordering is required, consider using theobserveOn(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.- Backpressure:
- This operator honors backpressure from downstream and expects it from the current
Flowable. Violating this expectation will lead toMissingBackpressureException. This is the most common operator where the exception pops up; look for sources up the chain that don't support backpressure, such asinterval(long, TimeUnit),timer(long, TimeUnit),PublishProcessororBehaviorProcessorand apply any of theonBackpressureXXXoperators before applyingobserveOnitself. Note also that request amounts are not preserved between the immediate downstream and the immediate upstream. The operator always requests the defaultbufferSize()amount first, then after every 75% of that amount delivered, another 75% of this default value. If preserving the request amounts is to be preferred over potential excess scheduler infrastructure use, consider applyingdelay(long, TimeUnit, Scheduler)with zero time instead. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
scheduler- theSchedulerto notifyFlow.Subscribers on- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
observeOn
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> observeOn(@NonNull @NonNull Scheduler scheduler, boolean delayError) Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer and optionally delaysonErrornotifications.
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.- Backpressure:
- This operator honors backpressure from downstream and expects it from the current
Flowable. Violating this expectation will lead toMissingBackpressureException. This is the most common operator where the exception pops up; look for sources up the chain that don't support backpressure, such asinterval(long, TimeUnit),timer(long, TimeUnit),PublishProcessororBehaviorProcessorand apply any of theonBackpressureXXXoperators before applyingobserveOnitself. Note also that request amounts are not preserved between the immediate downstream and the immediate upstream. The operator always requests the defaultbufferSize()amount first, then after every 75% of that amount delivered, another 75% of this default value. If preserving the request amounts is to be preferred over potential excess scheduler infrastructure use, consider applyingdelay(long, TimeUnit, Scheduler, boolean)with zero time instead. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
scheduler- theSchedulerto notifyFlow.Subscribers ondelayError- indicates if theonErrornotification may not cut ahead ofonNextnotification on the other side of the scheduling boundary. Iftrue, a sequence ending inonErrorwill be replayed in the same order as was received from upstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
observeOn
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final @NonNull Flowable<T> observeOn(@NonNull @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Signals the items and terminal signals of the currentFlowableon the specifiedScheduler, asynchronously with a bounded buffer of configurable size and optionally delaysonErrornotifications.
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.- Backpressure:
- This operator honors backpressure from downstream and expects it from the current
Flowable. Violating this expectation will lead toMissingBackpressureException. This is the most common operator where the exception pops up; look for sources up the chain that don't support backpressure, such asinterval(long, TimeUnit),timer(long, TimeUnit),PublishProcessororBehaviorProcessorand apply any of theonBackpressureXXXoperators before applyingobserveOnitself. Note also that request amounts are not preserved between the immediate downstream and the immediate upstream. The operator always requests the specifiedbufferSizeamount first, then after every 75% of that amount delivered, another 75% of this specified value. If preserving the request amounts is to be preferred over potential excess scheduler infrastructure use, consider applyingdelay(long, TimeUnit, Scheduler, boolean)with zero time instead. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
scheduler- theSchedulerto notifyFlow.Subscribers ondelayError- indicates if theonErrornotification may not cut ahead ofonNextnotification on the other side of the scheduling boundary. Iftrue, a sequence ending inonErrorwill be replayed in the same order as was received from upstreambufferSize- the size of the buffer.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
ofType
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<U> ofType(@NonNull @NonNull Class<@NonNull U> clazz) Filters the items emitted by the currentFlowable, only emitting those of the specified type.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
ofTypedoes not operate by default on a particularScheduler.
- Type Parameters:
U- the output type- Parameters:
clazz- the class type to filter the items emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifclazzisnull- See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer()Buffers an unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place.
An error from the current
Flowablewill cut ahead of any unconsumed item. UseonBackpressureBuffer(boolean)to have the operator keep the original signal order.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer(boolean delayError) Buffers an unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, optionally delaying an error until all buffered items have been consumed.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
delayError- iftrue, an exception from the currentFlowableis delayed until all buffered elements have been consumed by the downstream; iffalse, an exception is immediately signaled to the downstream, skipping any buffered element- Returns:
- the new
Flowableinstance - See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer(int capacity) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, and canceling the flow.
An error from the current
Flowablewill cut ahead of any unconsumed item. UseonBackpressureBuffer(int, boolean)to have the operator keep the original signal order.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcapacityis non-positive- Since:
- 1.1.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer(int capacity, boolean delayError) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, and canceling the flow.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.delayError- iftrue, an exception from the currentFlowableis delayed until all buffered elements have been consumed by the downstream; iffalse, an exception is immediately signaled to the downstream, skipping any buffered element- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcapacityis non-positive- Since:
- 1.1.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(SPECIAL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place. Ifunboundedistrue, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, and canceling the flow.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.delayError- iftrue, an exception from the currentFlowableis delayed until all buffered elements have been consumed by the downstream; iffalse, an exception is immediately signaled to the downstream, skipping any buffered elementunbounded- iftrue, the capacity value is interpreted as the internal "island" size of the unbounded buffer- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcapacityis non-positive- Since:
- 1.1.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final @NonNull Flowable<T> onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded, @NonNull @NonNull Action onOverflow) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place. Ifunboundedistrue, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, canceling the flow and calling theonOverflowaction.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.delayError- iftrue, an exception from the currentFlowableis delayed until all buffered elements have been consumed by the downstream; iffalse, an exception is immediately signaled to the downstream, skipping any buffered elementunbounded- iftrue, the capacity value is interpreted as the internal "island" size of the unbounded bufferonOverflow- action to execute if an item needs to be buffered, but there are no available slots.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonOverflowisnullIllegalArgumentException- ifcapacityis non-positive- Since:
- 1.1.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final @NonNull Flowable<T> onBackpressureBuffer(int capacity, boolean delayError, boolean unbounded, @NonNull @NonNull Action onOverflow, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place. Ifunboundedistrue, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, canceling the flow and calling theonOverflowaction.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.delayError- iftrue, an exception from the currentFlowableis delayed until all buffered elements have been consumed by the downstream; iffalse, an exception is immediately signaled to the downstream, skipping any buffered elementunbounded- iftrue, the capacity value is interpreted as the internal "island" size of the unbounded bufferonOverflow- action to execute if an item needs to be buffered, but there are no available slots.onDropped- theConsumerto be called with the item that could not be buffered due to capacity constraints.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonOverfloworonDroppedisnullIllegalArgumentException- ifcapacityis non-positive- Since:
- 3.1.7
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureBuffer(int capacity, @NonNull @NonNull Action onOverflow) Buffers an limited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place, however, the resultingFlowablewill signal aMissingBackpressureExceptionviaonErroras soon as the buffer's capacity is exceeded, dropping all undelivered items, canceling the flow and calling theonOverflowaction.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.onOverflow- action to execute if an item needs to be buffered, but there are no available slots. Null is allowed.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonOverflowisnullIllegalArgumentException- ifcapacityis non-positive- Since:
- 1.1.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final @NonNull Flowable<T> onBackpressureBuffer(long capacity, @Nullable @Nullable Action onOverflow, @NonNull @NonNull BackpressureOverflowStrategy overflowStrategy) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place. The resultingFlowablewill behave as determined byoverflowStrategyif the buffer capacity is exceeded:BackpressureOverflowStrategy.ERROR(default) will callonErrordropping all undelivered items, canceling the source, and notifying the producer withonOverflow.BackpressureOverflowStrategy.DROP_LATESTwill drop any new items emitted by the producer while the buffer is full, without generating anyonError. Each drop will, however, invokeonOverflowto signal the overflow to the producer.BackpressureOverflowStrategy.DROP_OLDESTwill drop the oldest items in the buffer in order to make room for newly emitted ones. Overflow will not generate anonError, but each drop will invokeonOverflowto signal the overflow to the producer.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.onOverflow- action to execute if an item needs to be buffered, but there are no available slots,nullis allowed.overflowStrategy- how should the resultingFlowablereact to buffer overflows,nullis not allowed.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonOverfloworoverflowStrategyisnullIllegalArgumentException- ifcapacityis non-positive- Since:
- 2.0
- See Also:
-
onBackpressureBuffer
@CheckReturnValue @NonNull @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final @NonNull Flowable<T> onBackpressureBuffer(long capacity, @Nullable @Nullable Action onOverflow, @NonNull @NonNull BackpressureOverflowStrategy overflowStrategy, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Buffers an optionally unlimited number of items from the currentFlowableand allows it to emit as fast it can while allowing the downstream to consume the items at its own place. The resultingFlowablewill behave as determined byoverflowStrategyif the buffer capacity is exceeded:BackpressureOverflowStrategy.ERROR(default) will callonErrordropping all undelivered items, canceling the source, and notifying the producer withonOverflow.BackpressureOverflowStrategy.DROP_LATESTwill drop any new items emitted by the producer while the buffer is full, without generating anyonError. Each drop will, however, invokeonOverflowto signal the overflow to the producer.BackpressureOverflowStrategy.DROP_OLDESTwill drop the oldest items in the buffer in order to make room for newly emitted ones. Overflow will not generate anonError, but each drop will invokeonOverflowto signal the overflow to the producer.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureBufferdoes not operate by default on a particularScheduler.
- Parameters:
capacity- number of slots available in the buffer.onOverflow- action to execute if an item needs to be buffered, but there are no available slots,nullis allowed.overflowStrategy- how should the resultingFlowablereact to buffer overflows,nullis not allowed.onDropped- theConsumerto be called with the item that could not be buffered due to capacity constraints.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonOverflow,overflowStrategyoronDroppedisnullIllegalArgumentException- ifcapacityis non-positive- Since:
- 3.1.7
- See Also:
-
onBackpressureDrop
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureDrop()Drops items from the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it).
If the downstream request count hits 0 then the resulting
Flowablewill refrain from callingonNextuntil theFlow.Subscriberinvokesrequest(n)again to increase the request count.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureDropdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
onBackpressureDrop
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Flowable<T> onBackpressureDrop(@NonNull @NonNull Consumer<? super @NonNull T> onDrop) Drops items from the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and calls the givenConsumerwith such dropped items.
If the downstream request count hits 0 then the resulting
Flowablewill refrain from callingonNextuntil theFlow.Subscriberinvokesrequest(n)again to increase the request count.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureDropdoes not operate by default on a particularScheduler.
- Parameters:
onDrop- the action to invoke for each item dropped, should be fast and should never block.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonDropisnull- Since:
- 1.1.0
- See Also:
-
onBackpressureLatest
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureLatest()Drops all but the latest item emitted by the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.
Its behavior is logically equivalent to
blockingLatest()with the exception that the downstream is not blocking while requesting more values.Note that if the current
Flowabledoes support backpressure, this operator ignores that capability and doesn't propagate any backpressure requests from downstream.Note that due to the nature of how backpressure requests are propagated through subscribeOn/observeOn, requesting more than 1 from downstream doesn't guarantee a continuous delivery of
onNextevents.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureLatestdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - Since:
- 1.1.0
-
onBackpressureLatest
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureLatest(@NonNull @NonNull Consumer<? super @NonNull T> onDropped) Drops all but the latest item emitted by the currentFlowableif the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.
Its behavior is logically equivalent to
blockingLatest()with the exception that the downstream is not blocking while requesting more values.Note that if the current
Flowabledoes support backpressure, this operator ignores that capability and doesn't propagate any backpressure requests from downstream.Note that due to the nature of how backpressure requests are propagated through subscribeOn/observeOn, requesting more than 1 from downstream doesn't guarantee a continuous delivery of
onNextevents.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureLatestdoes not operate by default on a particularScheduler.
- Parameters:
onDropped- called with the current entry when it has been replaced by a new one- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifonDroppedisnull- Since:
- 3.1.7
-
onBackpressureReduce
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onBackpressureReduce(@NonNull @NonNull BiFunction<@NonNull T, @NonNull T, @NonNull T> reducer) Reduces a sequence of two not emitted values via a function into a single value if the downstream is not ready to receive new items (indicated by a lack ofFlow.Subscription.request(long)calls from it) and emits this latest item when the downstream becomes ready.
Note that if the current
Flowabledoes support backpressure, this operator ignores that capability and doesn't propagate any backpressure requests from downstream.Note that due to the nature of how backpressure requests are propagated through subscribeOn/observeOn, requesting more than 1 from downstream doesn't guarantee a continuous delivery of
onNextevents.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureReducedoes not operate by default on a particularScheduler.
History: 3.0.9 - experimental
- Parameters:
reducer- the bi-function to call when there is more than one non-emitted value to downstream, the first argument of the bi-function is previous item and the second one is currently emitting from upstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifreducerisnull- Since:
- 3.1.0
- See Also:
-
onBackpressureReduce
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> onBackpressureReduce(@NonNull @NonNull Supplier<@NonNull R> supplier, @NonNull @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> reducer) Reduces upstream values into an aggregate value, provided by a supplier and combined via a reducer function, while the downstream is not ready to receive items, then emits this aggregate value when the downstream becomes ready.
Note that even if the downstream is ready to receive an item, the upstream item will always be aggregated into the output type, calling both the supplier and the reducer to produce the output value.
Note that if the current
Flowabledoes support backpressure, this operator ignores that capability and doesn't propagate any backpressure requests from downstream.Note that due to the nature of how backpressure requests are propagated through subscribeOn/observeOn, requesting more than 1 from downstream doesn't guarantee a continuous delivery of
onNextevents.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., not applying backpressure to it). - Scheduler:
onBackpressureReducedoes not operate by default on a particularScheduler.
History: 3.0.9 - experimental
- Type Parameters:
R- the aggregate type emitted when the downstream requests more items- Parameters:
supplier- the factory to call to create new item of type R to pass it as the first argument toreducer. It is called when previous returned value byreduceralready sent to downstream or the very first update from upstream received.reducer- the bi-function to call to reduce excessive updates which downstream is not ready to receive. The first argument of type R is the object returned bysupplieror result of previousreducerinvocation. The second argument of type T is the current update from upstream.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsupplierorreducerisnull- Since:
- 3.1.0
- See Also:
-
onErrorComplete
@CheckReturnValue @SchedulerSupport("none") @BackpressureSupport(PASS_THROUGH) @NonNull public final @NonNull Flowable<T> onErrorComplete()Returns aFlowableinstance that if the currentFlowableemits an error, it will emit anonCompleteand swallow the throwable.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
onErrorCompletedoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - Since:
- 3.0.0
-
onErrorComplete
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onErrorComplete(@NonNull @NonNull Predicate<? super Throwable> predicate) Returns aFlowableinstance that if the currentFlowableemits an error and the predicate returnstrue, it will emit anonCompleteand swallow the throwable.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
onErrorCompletedoes not operate by default on a particularScheduler.
- Parameters:
predicate- the predicate to call when anThrowableis emitted which should returntrueif theThrowableshould be swallowed and replaced with anonComplete.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull- Since:
- 3.0.0
-
onErrorResumeNext
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> onErrorResumeNext(@NonNull @NonNull Function<? super Throwable, @NonNull ? extends Flow.Publisher<? extends @NonNull T>> fallbackSupplier) Resumes the flow with aFlow.Publisherreturned for the failureThrowableof the currentFlowableby a function instead of signaling the error viaonError.
By default, when a
Publisherencounters an error that prevents it from emitting the expected item to itsFlow.Subscriber, thePublisherinvokes itsSubscriber'sonErrormethod, and then quits without invoking any more of itsSubscriber's methods. TheonErrorResumeNextmethod changes this behavior. If you pass a function that returns aPublisher(resumeFunction) toonErrorResumeNext, if the originalPublisherencounters an error, instead of invoking itsSubscriber'sonErrormethod, it will instead relinquish control to thePublisherreturned fromresumeFunction, which will invoke theSubscriber'sonNextmethod if it is able to do so. In such a case, because noPublishernecessarily invokesonError, theSubscribermay never know that an error happened.You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
- Backpressure:
- The operator honors backpressure from downstream. This and the resuming
Publishers are expected to honor backpressure as well. If any of them violate this expectation, the operator may throw anIllegalStateExceptionwhen the currentFlowablecompletes or aMissingBackpressureExceptionis signaled somewhere downstream. - Scheduler:
onErrorResumeNextdoes not operate by default on a particularScheduler.
- Parameters:
fallbackSupplier- a function that returns aPublisherthat will take over if the currentFlowableencounters an error- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffallbackSupplierisnull- See Also:
-
onErrorResumeWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> onErrorResumeWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> fallback) Resumes the flow with the givenFlow.Publisherwhen the currentFlowablefails instead of signaling the error viaonError.
By default, when a
Publisherencounters an error that prevents it from emitting the expected item to itsFlow.Subscriber, thePublisherinvokes itsSubscriber'sonErrormethod, and then quits without invoking any more of itsSubscriber's methods. TheonErrorResumeWithmethod changes this behavior. If you pass anotherPublisher(resumeSequence) to aPublisher'sonErrorResumeWithmethod, if the originalPublisherencounters an error, instead of invoking itsSubscriber'sonErrormethod, it will instead relinquish control toresumeSequencewhich will invoke theSubscriber'sonNextmethod if it is able to do so. In such a case, because noPublishernecessarily invokesonError, theSubscribermay never know that an error happened.You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
- Backpressure:
- The operator honors backpressure from downstream. This and the resuming
Publishers are expected to honor backpressure as well. If any of them violate this expectation, the operator may throw anIllegalStateExceptionwhen the currentFlowablecompletes orMissingBackpressureExceptionis signaled somewhere downstream. - Scheduler:
onErrorResumeWithdoes not operate by default on a particularScheduler.
- Parameters:
fallback- the nextPublishersource that will take over if the currentFlowableencounters an error- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffallbackisnull- See Also:
-
onErrorReturn
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> onErrorReturn(@NonNull @NonNull Function<? super Throwable, ? extends @NonNull T> itemSupplier) Ends the flow with a last item returned by a function for theThrowableerror signaled by the currentFlowableinstead of signaling the error viaonError.
By default, when a
Flow.Publisherencounters an error that prevents it from emitting the expected item to itsFlow.Subscriber, thePublisherinvokes itsSubscriber'sonErrormethod, and then quits without invoking any more of itsSubscriber's methods. TheonErrorReturnmethod changes this behavior. If you pass a function (resumeFunction) to aPublisher'sonErrorReturnmethod, if the originalPublisherencounters an error, instead of invoking itsSubscriber'sonErrormethod, it will instead emit the return value ofresumeFunction.You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowableis expected to honor backpressure as well. If it this expectation is violated, the operator may throwIllegalStateExceptionwhen the currentFlowablecompletes orMissingBackpressureExceptionis signaled somewhere downstream. - Scheduler:
onErrorReturndoes not operate by default on a particularScheduler.
- Parameters:
itemSupplier- a function that returns a single value that will be emitted along with a regularonCompletein case the currentFlowablesignals anonErrorevent- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemSupplierisnull- See Also:
-
onErrorReturnItem
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> onErrorReturnItem(@NonNull @NonNull T item) Ends the flow with the given last item when the currentFlowablefails instead of signaling the error viaonError.
By default, when a
Flow.Publisherencounters an error that prevents it from emitting the expected item to itsFlow.Subscriber, thePublisherinvokes itsSubscriber'sonErrormethod, and then quits without invoking any more of itsSubscriber's methods. TheonErrorReturnmethod changes this behavior. If you pass a function (resumeFunction) to aPublisher'sonErrorReturnmethod, if the originalPublisherencounters an error, instead of invoking itsSubscriber'sonErrormethod, it will instead emit the return value ofresumeFunction.You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowableis expected to honor backpressure as well. If it this expectation is violated, the operator may throwIllegalStateExceptionwhen the currentFlowablecompletes orMissingBackpressureExceptionis signaled somewhere downstream. - Scheduler:
onErrorReturnItemdoes not operate by default on a particularScheduler.
- Parameters:
item- the value that is emitted along with a regularonCompletein case the currentFlowablesignals an exception- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemisnull- See Also:
-
onTerminateDetach
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> onTerminateDetach()Nulls out references to the upstream producer and downstreamFlow.Subscriberif the sequence is terminated or downstream cancels.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
onTerminateDetachdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance the sequence is terminated or downstream cancels - Since:
- 2.0
-
parallel
@BackpressureSupport(FULL) @SchedulerSupport("none") @CheckReturnValue @NonNull public final @NonNull ParallelFlowable<T> parallel()Parallelizes the flow by creating multiple 'rails' (equal to the number of CPUs) and dispatches the upstream items to them in a round-robin fashion.Note that the rails don't execute in parallel on their own and one needs to apply
ParallelFlowable.runOn(Scheduler)to specify theSchedulerwhere each rail will execute.To merge the parallel 'rails' back into a single sequence, use
ParallelFlowable.sequential().
- Backpressure:
- The operator requires the upstream to honor backpressure and each 'rail' honors backpressure as well.
- Scheduler:
paralleldoes not operate by default on a particularScheduler.
History: 2.0.5 - experimental; 2.1 - beta
- Returns:
- the new
ParallelFlowableinstance - Since:
- 2.2
-
parallel
@BackpressureSupport(FULL) @SchedulerSupport("none") @CheckReturnValue @NonNull public final @NonNull ParallelFlowable<T> parallel(int parallelism) Parallelizes the flow by creating the specified number of 'rails' and dispatches the upstream items to them in a round-robin fashion.Note that the rails don't execute in parallel on their own and one needs to apply
ParallelFlowable.runOn(Scheduler)to specify theSchedulerwhere each rail will execute.To merge the parallel 'rails' back into a single sequence, use
ParallelFlowable.sequential().
- Backpressure:
- The operator requires the upstream to honor backpressure and each 'rail' honors backpressure as well.
- Scheduler:
paralleldoes not operate by default on a particularScheduler.
History: 2.0.5 - experimental; 2.1 - beta
- Parameters:
parallelism- the number of 'rails' to use- Returns:
- the new
ParallelFlowableinstance - Throws:
IllegalArgumentException- ifparallelismis non-positive- Since:
- 2.2
-
parallel
@BackpressureSupport(FULL) @SchedulerSupport("none") @CheckReturnValue @NonNull public final @NonNull ParallelFlowable<T> parallel(int parallelism, int prefetch) Parallelizes the flow by creating the specified number of 'rails' and dispatches the upstream items to them in a round-robin fashion and uses the defined per-'rail' prefetch amount.Note that the rails don't execute in parallel on their own and one needs to apply
ParallelFlowable.runOn(Scheduler)to specify theSchedulerwhere each rail will execute.To merge the parallel 'rails' back into a single sequence, use
ParallelFlowable.sequential().
- Backpressure:
- The operator requires the upstream to honor backpressure and each 'rail' honors backpressure as well.
- Scheduler:
paralleldoes not operate by default on a particularScheduler.
History: 2.0.5 - experimental; 2.1 - beta
- Parameters:
parallelism- the number of 'rails' to useprefetch- the number of items each 'rail' should prefetch- Returns:
- the new
ParallelFlowableinstance - Throws:
IllegalArgumentException- ifparallelismorprefetchis non-positive- Since:
- 2.2
-
publish
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull ConnectableFlowable<T> publish()Returns aConnectableFlowable, which is a variety ofFlow.Publisherthat waits until itsconnectmethod is called before it begins emitting items to thoseFlow.Subscribers that have subscribed to it.
- Backpressure:
- The returned
ConnectableFlowablehonors backpressure for each of itsSubscribers and expects the currentFlowableto honor backpressure as well. If this expectation is violated, the operator will signal aMissingBackpressureExceptionto itsSubscribers and disconnect. - Scheduler:
publishdoes not operate by default on a particularScheduler.
- Returns:
- the new
ConnectableFlowableinstance - See Also:
-
publish
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> publish(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector) Returns aFlowablethat emits the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the underlying sequence.
- Backpressure:
- The operator expects the current
Flowableto honor backpressure and if this expectation is violated, the operator will signal aMissingBackpressureExceptionthrough theFlowableprovided to the function. Since theFlow.Publisherreturned by theselectormay be independent of the providedFlowableto the function, the output's backpressure behavior is determined by this returnedPublisher. - Scheduler:
publishdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a function that can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence.Flow.Subscribers to the given source will receive all notifications of the source from the time of the subscription forward.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnull- See Also:
-
publish
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> publish(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> selector, int prefetch) Returns aFlowablethat emits the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the underlying sequence.
- Backpressure:
- The operator expects the current
Flowableto honor backpressure and if this expectation is violated, the operator will signal aMissingBackpressureExceptionthrough theFlowableprovided to the function. Since theFlow.Publisherreturned by theselectormay be independent of the providedFlowableto the function, the output's backpressure behavior is determined by this returnedPublisher. - Scheduler:
publishdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a function that can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence.Flow.Subscribers to the given source will receive all notifications of the source from the time of the subscription forward.prefetch- the number of elements to prefetch from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnullIllegalArgumentException- ifprefetchis non-positive- See Also:
-
publish
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull ConnectableFlowable<T> publish(int bufferSize) Returns aConnectableFlowable, which is a variety ofFlow.Publisherthat waits until itsconnectmethod is called before it begins emitting items to thoseFlow.Subscribers that have subscribed to it.
- Backpressure:
- The returned
ConnectableFlowablehonors backpressure for each of itsSubscribers and expects the currentFlowableto honor backpressure as well. If this expectation is violated, the operator will signal aMissingBackpressureExceptionto itsSubscribers and disconnect. - Scheduler:
publishdoes not operate by default on a particularScheduler.
- Parameters:
bufferSize- the number of elements to prefetch from the currentFlowable- Returns:
- the new
ConnectableFlowableinstance - Throws:
IllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
rebatchRequests
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> rebatchRequests(int n) Requestsninitially from the upstream and then 75% ofnsubsequently after 75% ofnvalues have been emitted to the downstream.This operator allows preventing the downstream to trigger unbounded mode via
request(Long.MAX_VALUE)or compensate for the per-item overhead of small and frequent requests.- Backpressure:
- The operator expects backpressure from upstream and honors backpressure from downstream.
- Scheduler:
rebatchRequestsdoes not operate by default on a particularScheduler.
- Parameters:
n- the initial request amount, further request will happen after 75% of this value- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifnis non-positive- Since:
- 2.0
-
reduce
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Maybe<T> reduce(@NonNull @NonNull BiFunction<@NonNull T, @NonNull T, @NonNull T> reducer) Returns aMaybethat applies a specified accumulator function to the first item emitted by the currentFlowable, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, 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
injectmethod that does a similar operation on lists.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure of its downstream consumer and consumes the upstream source in unbounded mode.
- Scheduler:
reducedoes not operate by default on a particularScheduler.
- Parameters:
reducer- an accumulator function to be invoked on each item emitted by the currentFlowable, whose result will be used in the next accumulator call- Returns:
- the new
Maybeinstance - Throws:
NullPointerException- ifreducerisnull- See Also:
-
reduce
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Single<R> reduce(@NonNull R seed, @NonNull @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> reducer) Returns aSinglethat applies a specified accumulator function to the first item emitted by the currentFlowableand a specified seed value, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, 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
injectmethod that does a similar operation on lists.Note that the
seedis shared among all subscribers to the resultingFlowableand may cause problems if it is mutable. To make sure each subscriber gets its own value, defer the application of this operator viadefer(Supplier):Flowable<T> source = ... Single.defer(() -> source.reduce(new ArrayList<>(), (list, item) -> list.add(item))); // alternatively, by using compose to stay fluent source.compose(o -> Flowable.defer(() -> o.reduce(new ArrayList<>(), (list, item) -> list.add(item)).toFlowable()) ).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
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure of its downstream consumer and consumes the upstream source in unbounded mode.
- Scheduler:
reducedoes not operate by default on a particularScheduler.
- Type Parameters:
R- the accumulator and output value type- Parameters:
seed- the initial (seed) accumulator valuereducer- an accumulator function to be invoked on each item emitted by the currentFlowable, the result of which will be used in the next accumulator call- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifseedorreducerisnull- See Also:
-
reduceWith
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Single<R> reduceWith(@NonNull @NonNull Supplier<@NonNull R> seedSupplier, @NonNull @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> reducer) Returns aSinglethat applies a specified accumulator function to the first item emitted by the currentFlowableand a seed value derived from calling a specifiedseedSupplier, then feeds the result of that function along with the second item emitted by the currentFlowableinto the same function, and so on until all items have been emitted by the current and finiteFlowable, 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
injectmethod that does a similar operation on lists.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure of its downstream consumer and consumes the upstream source in unbounded mode.
- Scheduler:
reduceWithdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the accumulator and output value type- Parameters:
seedSupplier- theSupplierthat provides the initial (seed) accumulator value for each individualFlow.Subscriberreducer- an accumulator function to be invoked on each item emitted by the currentFlowable, the result of which will be used in the next accumulator call- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifseedSupplierorreducerisnull- See Also:
-
repeat
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> repeat()Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableindefinitely.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
repeatdoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
repeat
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> repeat(long times) Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableat mostcounttimes.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
repeatdoes not operate by default on a particularScheduler.
- Parameters:
times- the number of times the currentFlowableitems are repeated, a count of 0 will yield an empty sequence- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- iftimesis less than zero- See Also:
-
repeatUntil
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> repeatUntil(@NonNull @NonNull BooleanSupplier stop) Returns aFlowablethat repeats the sequence of items emitted by the currentFlowableuntil the provided stop function returnstrue.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
repeatUntildoes not operate by default on a particularScheduler.
- Parameters:
stop- a boolean supplier that is called when the currentFlowablecompletes and unless it returnsfalse, the currentFlowableis resubscribed- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifstopisnull- See Also:
-
repeatWhen
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> repeatWhen(@NonNull @NonNull Function<? super Flowable<Object>, @NonNull ? extends Flow.Publisher<@NonNull ?>> handler) Returns aFlowablethat emits the same values as the currentFlowablewith the exception of anonComplete. AnonCompletenotification from the source will result in the emission of avoiditem to theFlowableprovided as an argument to thenotificationHandlerfunction. If thatFlow.PublishercallsonCompleteoronErrorthenrepeatWhenwill callonCompleteoronErroron the child subscription. Otherwise, thisPublisherwill resubscribe to the currentFlowable.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
repeatWhendoes not operate by default on a particularScheduler.
- Parameters:
handler- receives aPublisherof notifications with which a user can complete or error, aborting the repeat.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifhandlerisnull- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull ConnectableFlowable<T> replay()Returns aConnectableFlowablethat shares a single subscription to the underlyingFlow.Publisherthat will replay all of its items and notifications to any futureFlow.Subscriber. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Returns:
- the new
ConnectableFlowableinstance - See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector) Returns aFlowablethat emits items that are the results of invoking a specified selector on the items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- the selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnull- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replayingbufferSizenotifications.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- the selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowablebufferSize- the buffer size that limits the number of items the operator can replay- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replayingbufferSizenotifications.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- the selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowablebufferSize- the buffer size that limits the number of items the operator can replayeagerTruncate- iftrue, whenever the internal buffer is truncated to the given bufferSize, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectorisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replayoperates by default on thecomputationScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowablebufferSize- the buffer size that limits the number of items the operator can replaytime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectororunitisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowablebufferSize- the buffer size that limits the number of items the operator can replaytime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- theSchedulerthat is the time source for the window- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselector,unitorschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, int bufferSize, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying no more thanbufferSizeitems that were emitted within a specified time window.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowablebufferSize- the buffer size that limits the number of items the operator can replaytime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- theSchedulerthat is the time source for the windoweagerTruncate- iftrue, whenever the internal buffer is truncated to the given bufferSize/age, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselector,unitorschedulerisnullIllegalArgumentException- ifbufferSizeis less than zero- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replayoperates by default on thecomputationScheduler.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowabletime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselectororunitisnull- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowabletime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- the scheduler that is the time source for the window- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselector,unitorschedulerisnull- See Also:
-
replay
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final <@NonNull R> @NonNull Flowable<R> replay(@NonNull @NonNull Function<? super Flowable<@NonNull T>, @NonNull ? extends Flow.Publisher<@NonNull R>> selector, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aFlowablethat emits items that are the results of invoking a specified selector on items emitted by aConnectableFlowablethat shares a single subscription to the currentFlowable, replaying all items that were emitted within a specified time window.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Type Parameters:
R- the type of items emitted by the resultingFlowable- Parameters:
selector- a selector function, which can use the multicasted sequence as many times as needed, without causing multiple subscriptions to the currentFlowabletime- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- the scheduler that is the time source for the windoweagerTruncate- iftrue, whenever the internal buffer is truncated to the given age, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifselector,unitorschedulerisnull- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull ConnectableFlowable<T> replay(int bufferSize) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems to lateFlow.Subscribers. A ConnectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions. To ensure no beyond-bufferSize items are referenced, use thereplay(int, boolean)overload witheagerTruncate = true.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Parameters:
bufferSize- the buffer size that limits the number of items that can be replayed- Returns:
- the new
ConnectableFlowableinstance - Throws:
IllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull ConnectableFlowable<T> replay(int bufferSize, boolean eagerTruncate) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.
Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions. To ensure no beyond-bufferSize items are referenced, seteagerTruncate = true.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replaydoes not operate by default on a particularScheduler.
- Parameters:
bufferSize- the buffer size that limits the number of items that can be replayedeagerTruncate- iftrue, whenever the internal buffer is truncated to the given bufferSize, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
ConnectableFlowableinstance - Throws:
IllegalArgumentException- ifbufferSizeis non-positive- Since:
- 3.0.0
- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull ConnectableFlowable<T> replay(int bufferSize, long time, @NonNull @NonNull TimeUnit unit) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays at mostbufferSizeitems that were emitted during a specified time window. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.
Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions. To ensure no out-of-date or beyond-bufferSize items are referenced, use thereplay(int, long, TimeUnit, Scheduler, boolean)overload witheagerTruncate = true.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Flow.Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replayoperates by default on thecomputationScheduler.
- Parameters:
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 oftime- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull ConnectableFlowable<T> replay(int bufferSize, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays a maximum ofbufferSizeitems that are emitted within a specified time window to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.
Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions. To ensure no out-of-date or beyond-bufferSize items are referenced, use thereplay(int, long, TimeUnit, Scheduler, boolean)overload witheagerTruncate = true.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 oftimescheduler- the scheduler that is used as a time source for the window- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull ConnectableFlowable<T> replay(int bufferSize, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays a maximum ofbufferSizeitems that are emitted within a specified time window to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod is called.Note that due to concurrency requirements,
replay(bufferSize)may hold strong references to more thanbufferSizesource emissions. To ensure no out-of-date or beyond-bufferSize items are referenced, seteagerTruncate = true.
- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 oftimescheduler- the scheduler that is used as a time source for the windoweagerTruncate- iftrue, whenever the internal buffer is truncated to the given bufferSize/age, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 3.0.0
- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull ConnectableFlowable<T> replay(long time, @NonNull @NonNull TimeUnit unit) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod 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 witheagerTruncate = true.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- This version of
replayoperates by default on thecomputationScheduler.
- Parameters:
time- the duration of the window in which the replayed items must have been emittedunit- the time unit oftime- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull ConnectableFlowable<T> replay(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod 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 witheagerTruncate = true.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- theSchedulerthat is the time source for the window- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
replay
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull ConnectableFlowable<T> replay(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean eagerTruncate) Returns aConnectableFlowablethat shares a single subscription to the currentFlowableand replays all items emitted by it within a specified time window to lateFlow.Subscribers. A connectableFlowableresembles an ordinaryFlowable, except that it does not begin emitting items when it is subscribed to, but only when itsconnectmethod 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.- Backpressure:
- This operator supports backpressure. Note that the upstream requests are determined by the child
Subscriberwhich requests the largest amount: i.e., two childSubscribers with requests of 10 and 100 will request 100 elements from the currentFlowablesequence. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the duration of the window in which the replayed items must have been emittedunit- the time unit oftimescheduler- theSchedulerthat is the time source for the windoweagerTruncate- iftrue, whenever the internal buffer is truncated to the given bufferSize/age, the oldest item will be guaranteed dereferenced, thus avoiding unexpected retention- Returns:
- the new
ConnectableFlowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
retry
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> retry()Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonError(infinite retry count).
If the current
FlowablecallsFlow.Subscriber.onError(Throwable), this method will resubscribe to the currentFlowablerather than propagating theonErrorcall.Any and all items emitted by the current
Flowablewill be emitted by the resultingFlowable, even those emitted during failed subscriptions. For example, if the currentFlowablefails 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].- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retrydoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
retry
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> retry(@NonNull @NonNull BiPredicate<@NonNull ? super Integer, @NonNull ? super Throwable> predicate) Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonErrorand the predicate returnstruefor that specific exception and retry count.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retrydoes not operate by default on a particularScheduler.
- Parameters:
predicate- the predicate that determines if a resubscription may happen in case of a specific exception and retry count- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
retry
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> retry(long times) Returns aFlowablethat mirrors the currentFlowable, resubscribing to it if it callsonErrorup to a specified number of retries.
If the current
FlowablecallsFlow.Subscriber.onError(Throwable), this method will resubscribe to the currentFlowablefor a maximum ofcountresubscriptions rather than propagating theonErrorcall.Any and all items emitted by the current
Flowablewill be emitted by the resultingFlowable, even those emitted during failed subscriptions. For example, if the currentFlowablefails 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].- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retrydoes not operate by default on a particularScheduler.
- Parameters:
times- the number of times to resubscribe if the currentFlowablefails- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- iftimesis negative- See Also:
-
retry
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> retry(long times, @NonNull @NonNull Predicate<@NonNull ? super Throwable> predicate) Retries at most times or until the predicate returnsfalse, whichever happens first.- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retrydoes not operate by default on a particularScheduler.
- Parameters:
times- the number of times to resubscribe if the currentFlowablefailspredicate- the predicate called with the failureThrowableand should returntrueto trigger a retry.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnullIllegalArgumentException- iftimesis negative
-
retry
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> retry(@NonNull @NonNull Predicate<@NonNull ? super Throwable> predicate) Retries the currentFlowableif the predicate returnstrue.- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retrydoes not operate by default on a particularScheduler.
- Parameters:
predicate- the predicate that receives the failureThrowableand should returntrueto trigger a retry.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull
-
retryUntil
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> retryUntil(@NonNull @NonNull BooleanSupplier stop) Retries until the given stop function returnstrue.- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retryUntildoes not operate by default on a particularScheduler.
- Parameters:
stop- the function that should returntrueto stop retrying- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifstopisnull
-
retryWhen
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> retryWhen(@NonNull @NonNull Function<? super Flowable<Throwable>, @NonNull ? extends Flow.Publisher<@NonNull ?>> handler) Returns aFlowablethat emits the same values as the currentFlowablewith the exception of anonError. AnonErrornotification from the source will result in the emission of aThrowableitem to theFlowableprovided as an argument to thenotificationHandlerfunction. If thatFlow.PublishercallsonCompleteoronErrorthenretrywill callonCompleteoronErroron the child subscription. Otherwise, thisPublisherwill resubscribe to the currentFlowable.
Example: This retries 3 times, each time incrementing the number of seconds it waits.
Output is:Flowable.create((FlowableEmitter<? super String> s) -> { System.out.println("subscribing"); s.onError(new RuntimeException("always fails")); }, BackpressureStrategy.BUFFER).retryWhen(attempts -> { return attempts.zipWith(Flowable.range(1, 3), (n, i) -> i).flatMap(i -> { System.out.println("delay retry by " + i + " second(s)"); return Flowable.timer(i, TimeUnit.SECONDS); }); }).blockingForEach(System.out::println);subscribing delay retry by 1 second(s) subscribing delay retry by 2 second(s) subscribing delay retry by 3 second(s) subscribingNote that the inner
Publisherreturned by the handler function should signal eitheronNext,onErrororonCompletein response to the receivedThrowableto indicate the operator should retry or terminate. If the upstream to the operator is asynchronous, signalingonNextfollowed byonCompleteimmediately may result in the sequence to be completed immediately. Similarly, if this innerPublishersignalsonErrororonCompletewhile 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:
Flowable.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 Flowable.timer(counter.get(), TimeUnit.SECONDS); }); }) .blockingSubscribe(System.out::println, System.out::println);- Backpressure:
- The operator honors downstream backpressure and expects both the source
and inner
Publishers to honor backpressure as well. If this expectation is violated, the operator may throw anIllegalStateException. - Scheduler:
retryWhendoes not operate by default on a particularScheduler.
- Parameters:
handler- receives aPublisherof notifications with which a user can complete or error, aborting the retry- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifhandlerisnull- See Also:
-
safeSubscribe
@BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final void safeSubscribe(@NonNull @NonNull Flow.Subscriber<? super @NonNull T> subscriber) Subscribes to the currentFlowableand wraps the givenFlow.Subscriberinto aSafeSubscriber(if not already aSafeSubscriber) that deals with exceptions thrown by a misbehavingSubscriber(that doesn't follow the Reactive Streams specification).- Backpressure:
- This operator leaves the reactive world and the backpressure behavior depends on the
Subscriber's behavior. - Scheduler:
safeSubscribedoes not operate by default on a particularScheduler.
- Parameters:
subscriber- the incomingSubscriberinstance- Throws:
NullPointerException- ifsubscriberisnull
-
sample
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> sample(long period, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
sampleoperates by default on thecomputationScheduler.
- Parameters:
period- the sampling rateunit- theTimeUnitin whichperiodis defined- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
sample
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> sample(long period, @NonNull @NonNull TimeUnit unit, boolean emitLast) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals and optionally emit the very last upstream item when the upstream completes.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
sampleoperates by default on thecomputationScheduler.
History: 2.0.5 - experimental
- Parameters:
period- the sampling rateunit- theTimeUnitin whichperiodis definedemitLast- iftrue, and the upstream completes while there is still an unsampled item available, that item is emitted to downstream before completion iffalse, an unsampled last item is ignored.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- Since:
- 2.1
- See Also:
-
sample
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> sample(long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularScheduler.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
period- the sampling rateunit- theTimeUnitin whichperiodis definedscheduler- theSchedulerto use when sampling- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
sample
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> sample(long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean emitLast) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularSchedulerand optionally emit the very last upstream item when the upstream completes.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
History: 2.0.5 - experimental
- Parameters:
period- the sampling rateunit- theTimeUnitin whichperiodis definedscheduler- theSchedulerto use when samplingemitLast- iftrueand the upstream completes while there is still an unsampled item available, that item is emitted to downstream before completion iffalse, an unsampled last item is ignored.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- Since:
- 2.1
- See Also:
-
sample
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> sample(long period, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean emitLast, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits the most recently emitted item (if any) emitted by the currentFlowablewithin periodic time intervals, where the intervals are defined on a particularSchedulerand optionally emit the very last upstream item when the upstream completes.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
period- the sampling rateunit- theTimeUnitin whichperiodis definedscheduler- theSchedulerto use when samplingemitLast- iftrueand the upstream completes while there is still an unsampled item available, that item is emitted to downstream before completion iffalse, an unsampled last item is ignored.onDropped- called with the current entry when it has been replaced by a new one- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnulloronDroppedisnull- Since:
- 3.1.6 - Experimental
- See Also:
-
sample
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> sample(@NonNull @NonNull Flow.Publisher<@NonNull U> sampler) Returns aFlowablethat, when the specifiedsamplerFlow.Publisheremits an item or completes, emits the most recently emitted item (if any) emitted by the currentFlowablesince the previous emission from thesamplerPublisher.
- Backpressure:
- This operator does not support backpressure as it uses the emissions of the
samplerPublisherto control data flow. - Scheduler:
- This version of
sampledoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of the samplerPublisher- Parameters:
sampler- thePublisherto use for sampling the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsamplerisnull- See Also:
-
sample
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> sample(@NonNull @NonNull Flow.Publisher<@NonNull U> sampler, boolean emitLast) Returns aFlowablethat, when the specifiedsamplerFlow.Publisheremits an item or completes, emits the most recently emitted item (if any) emitted by the currentFlowablesince the previous emission from thesamplerPublisherand optionally emit the very last upstream item when the upstream or otherPublishercomplete.
- Backpressure:
- This operator does not support backpressure as it uses the emissions of the
samplerPublisherto control data flow. - Scheduler:
- This version of
sampledoes not operate by default on a particularScheduler.
History: 2.0.5 - experimental
- Type Parameters:
U- the element type of the samplerPublisher- Parameters:
sampler- thePublisherto use for sampling the currentFlowableemitLast- iftrueand the upstream completes while there is still an unsampled item available, that item is emitted to downstream before completion iffalse, an unsampled last item is ignored.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsamplerisnull- Since:
- 2.1
- See Also:
-
scan
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> scan(@NonNull @NonNull BiFunction<@NonNull T, @NonNull T, @NonNull T> accumulator) Returns aFlowablethat emits the first value emitted by the currentFlowable, then emits one value for each subsequent value emitted by the currentFlowable. Each emission after the first is the result of applying the specified accumulator function to the previous emission and the corresponding value from the currentFlowable.
This sort of function is sometimes called an accumulator.
- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. Violating this expectation, aMissingBackpressureExceptionmay get signaled somewhere downstream. - Scheduler:
scandoes not operate by default on a particularScheduler.
- Parameters:
accumulator- an accumulator function to be invoked on each item emitted by the currentFlowable, whose result will be emitted toFlow.Subscribers viaonNextand used in the next accumulator call- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifaccumulatorisnull- See Also:
-
scan
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> scan(@NonNull R initialValue, @NonNull @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> accumulator) Returns aFlowablethat emits the provided initial (seed) value, then emits one value for each value emitted by the currentFlowable. Each emission after the first is the result of applying the specified accumulator function to the previous emission and the corresponding value from the currentFlowable.
This sort of function is sometimes called an accumulator.
Note that the
Flowablethat results from this method will emitinitialValueas its first emitted item.Note that the
initialValueis shared among all subscribers to the resultingFlowableand may cause problems if it is mutable. To make sure each subscriber gets its own value, defer the application of this operator viadefer(Supplier):Publisher<T> source = ... Flowable.defer(() -> source.scan(new ArrayList<>(), (list, item) -> list.add(item))); // alternatively, by using compose to stay fluent source.compose(o -> Flowable.defer(() -> o.scan(new ArrayList<>(), (list, item) -> list.add(item))) );- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. Violating this expectation, aMissingBackpressureExceptionmay get signaled somewhere downstream. The downstream request pattern is not preserved across this operator. The upstream is requestedbufferSize()- 1 upfront and 75% ofbufferSize()thereafter. - Scheduler:
scandoes not operate by default on a particularScheduler.
- Type Parameters:
R- the initial, accumulator and result type- Parameters:
initialValue- the initial (seed) accumulator itemaccumulator- an accumulator function to be invoked on each item emitted by the currentFlowable, whose result will be emitted toFlow.Subscribers viaonNextand used in the next accumulator call- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifinitialValueoraccumulatorisnull- See Also:
-
scanWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> scanWith(@NonNull @NonNull Supplier<@NonNull R> seedSupplier, @NonNull @NonNull BiFunction<@NonNull R, ? super @NonNull T, @NonNull R> accumulator) Returns aFlowablethat emits the provided initial (seed) value, then emits one value for each value emitted by the currentFlowable. Each emission after the first is the result of applying the specified accumulator function to the previous emission and the corresponding value from the currentFlowable.
This sort of function is sometimes called an accumulator.
Note that the
Flowablethat results from this method will emit the value returned by theseedSupplieras its first item.- Backpressure:
- The operator honors downstream backpressure and expects the current
Flowableto honor backpressure as well. Violating this expectation, aMissingBackpressureExceptionmay get signaled somewhere downstream. The downstream request pattern is not preserved across this operator. The upstream is requestedbufferSize()- 1 upfront and 75% ofbufferSize()thereafter. - Scheduler:
scanWithdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the initial, accumulator and result type- Parameters:
seedSupplier- aSupplierthat returns the initial (seed) accumulator item for each individualFlow.Subscriberaccumulator- an accumulator function to be invoked on each item emitted by the currentFlowable, whose result will be emitted toSubscribers viaonNextand used in the next accumulator call- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifseedSupplieroraccumulatorisnull- See Also:
-
serialize
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> serialize()Forces the currentFlowable's emissions and notifications to be serialized and for it to obey thePublishercontract in other ways.It is possible for a
Flow.Publisherto invoke itsFlow.Subscribers' methods asynchronously, perhaps from different threads. This could make such aPublisherpoorly-behaved, in that it might try to invokeonCompleteoronErrorbefore one of itsonNextinvocations, or it might callonNextfrom two different threads concurrently. You can force such aPublisherto be well-behaved and sequential by applying theserializemethod to it.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
serializedoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
singleElement
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Maybe<T> singleElement()Returns aMaybethat completes if thisFlowableis empty, signals one item if thisFlowablesignals exactly one item or signals anIllegalArgumentExceptionif thisFlowablesignals more than one item.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
singleElementdoes not operate by default on a particularScheduler.
- Returns:
- the new
Maybeinstance - See Also:
-
single
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<T> single(@NonNull @NonNull T defaultItem) Returns aSinglethat emits the single item emitted by the currentFlowableif it emits only a single item, or a default item if the currentFlowableemits no items. If the currentFlowableemits more than one item, anIllegalArgumentExceptionis signaled instead.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
singledoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- a default value to emit if the currentFlowableemits no item- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifdefaultItemisnull- See Also:
-
singleOrError
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<T> singleOrError()Returns aSinglethat emits the single item emitted by thisFlowable, if thisFlowableemits only a single item, otherwise if thisFlowablecompletes without emitting any items aNoSuchElementExceptionwill be signaled and if thisFlowableemits more than one item, anIllegalArgumentExceptionwill be signaled.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure). - Scheduler:
singleOrErrordoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
skip
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> skip(long count) Returns aFlowablethat skips the firstcountitems emitted by the currentFlowableand emits the remainder.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This version of
skipdoes not operate by default on a particularScheduler.
- Parameters:
count- the number of items to skip- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis negative- See Also:
-
skip
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> skip(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat skips values emitted by the currentFlowablebefore a specified time window elapses.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
skipdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
time- the length of the time window to skipunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
skip
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> skip(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat skips values emitted by the currentFlowablebefore a specified time window on a specifiedSchedulerelapses.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use for the timed skipping
- Parameters:
time- the length of the time window to skipunit- the time unit oftimescheduler- theScheduleron which the timed wait happens- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
skipLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> skipLast(int count) Returns aFlowablethat drops a specified number of items from the end of the sequence emitted by the currentFlowable.
This
Flow.Subscriberaccumulates a queue long enough to store the firstcountitems. As more items are received, items are taken from the front of the queue and emitted by the resultingFlowable. This causes such items to be delayed.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This version of
skipLastdoes not operate by default on a particularScheduler.
- Parameters:
count- number of items to drop from the end of the source sequence- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis less than zero- See Also:
-
skipLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> skipLast(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
skipLastdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
time- the length of the time windowunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
skipLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> skipLast(long time, @NonNull @NonNull TimeUnit unit, boolean delayError) Returns aFlowablethat drops items emitted by the currentFlowableduring a specified time window before the source completes.
Note: this action will cache the latest items arriving in the specified time window.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
skipLastdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
time- the length of the time windowunit- the time unit oftimedelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements dropped- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
skipLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> skipLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat drops items emitted by the currentFlowableduring 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.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use for tracking the current time
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- the scheduler used as the time source- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
skipLast
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> skipLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError) Returns aFlowablethat drops items emitted by the currentFlowableduring 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.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use to track the current time
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- the scheduler used as the time sourcedelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements dropped- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
skipLast
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("custom") public final @NonNull Flowable<T> skipLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat drops items emitted by the currentFlowableduring 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.
- Backpressure:
- The operator doesn't support backpressure as it uses time to skip an arbitrary number of elements and
thus has to consume the current
Flowablein an unbounded manner (i.e., no backpressure applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- the scheduler used as the time sourcedelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements droppedbufferSize- the hint about how many elements to expect to be skipped- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
skipUntil
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> skipUntil(@NonNull @NonNull Flow.Publisher<@NonNull U> other) Returns aFlowablethat skips items emitted by the currentFlowableuntil a secondFlow.Publisheremits an item.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
skipUntildoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of the otherPublisher- Parameters:
other- the secondPublisherthat has to emit an item before the currentFlowable's elements begin to be mirrored by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
skipWhile
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> skipWhile(@NonNull @NonNull Predicate<? super @NonNull T> predicate) Returns aFlowablethat skips all items emitted by the currentFlowableas long as a specified condition holdstrue, but emits all further source items as soon as the condition becomesfalse.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
skipWhiledoes not operate by default on a particularScheduler.
- Parameters:
predicate- a function to test each item emitted from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
sorted
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> sorted()Returns aFlowablethat emits the events emitted by sourceFlow.Publisher, in a sorted order. Each item emitted by thePublishermust implementComparablewith respect to all other items in the sequence.If any item emitted by this
Flowabledoes not implementComparablewith respect to all other items emitted by thisFlowable, no items will be emitted and the sequence is terminated with aClassCastException.Note that calling
sortedwith long, non-terminating or infinite sources might causeOutOfMemoryError- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
sorteddoes not operate by default on a particularScheduler.
- Returns:
- the new
Flowableinstance
-
sorted
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> sorted(@NonNull @NonNull Comparator<@NonNull ? super @NonNull T> comparator) Returns aFlowablethat emits the events emitted by sourceFlow.Publisher, in a sorted order based on a specified comparison function.Note that calling
sortedwith long, non-terminating or infinite sources might causeOutOfMemoryError- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
sorteddoes not operate by default on a particularScheduler.
- Parameters:
comparator- a function that compares two items emitted by the currentFlowableand returns anIntegerthat indicates their sort order- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifcomparatorisnull
-
startWithIterable
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> startWithIterable(@NonNull @NonNull Iterable<? extends @NonNull T> items) Returns aFlowablethat emits the items in a specifiedIterablebefore it begins to emit items emitted by the currentFlowable.
- Backpressure:
- The operator honors backpressure from downstream. The Current
Flowableis expected to honor backpressure as well. If it violates this rule, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
startWithIterabledoes not operate by default on a particularScheduler.
- Parameters:
items- anIterablethat contains the items you want the resultingFlowableto emit first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemsisnull- Since:
- 3.0.0
- See Also:
-
startWith
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public final @NonNull Flowable<T> startWith(@NonNull @NonNull CompletableSource other) Returns aFlowablewhich first runs the otherCompletableSourcethen the currentFlowableif the other completed normally.
- Backpressure:
- The returned
Flowablehonors the backpressure of the downstream consumer. - Scheduler:
startWithdoes not operate by default on a particularScheduler.
- Parameters:
other- the otherCompletableSourceto run first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 3.0.0
-
startWith
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public final @NonNull Flowable<T> startWith(@NonNull @NonNull SingleSource<@NonNull T> other) Returns aFlowablewhich first runs the otherSingleSourcethen the currentFlowableif the other succeeded normally.
- Backpressure:
- The returned
Flowablehonors the backpressure of the downstream consumer. - Scheduler:
startWithdoes not operate by default on a particularScheduler.
- Parameters:
other- the otherSingleSourceto run first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 3.0.0
-
startWith
@CheckReturnValue @NonNull @SchedulerSupport("none") @BackpressureSupport(FULL) public final @NonNull Flowable<T> startWith(@NonNull @NonNull MaybeSource<@NonNull T> other) Returns aFlowablewhich first runs the otherMaybeSourcethen the currentFlowableif the other succeeded or completed normally.
- Backpressure:
- The returned
Flowablehonors the backpressure of the downstream consumer. - Scheduler:
startWithdoes not operate by default on a particularScheduler.
- Parameters:
other- the otherMaybeSourceto run first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 3.0.0
-
startWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> startWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items in a specifiedFlow.Publisherbefore it begins to emit items emitted by the currentFlowable.
- Backpressure:
- The operator honors backpressure from downstream. Both this and the
otherPublishers are expected to honor backpressure as well. If any of then violates this rule, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
startWithdoes not operate by default on a particularScheduler.
- Parameters:
other- aPublisherthat contains the items you want the modifiedPublisherto emit first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
startWithItem
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> startWithItem(@NonNull @NonNull T item) Returns aFlowablethat emits a specified item before it begins to emit items emitted by the currentFlowable.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowableis expected to honor backpressure as well. If it violates this rule, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
startWithItemdoes not operate by default on a particularScheduler.
- Parameters:
item- the item to emit first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemisnull- Since:
- 3.0.0
- See Also:
-
startWithArray
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @SafeVarargs @NonNull public final @NonNull Flowable<T> startWithArray(@NonNull @NonNull T... items) Returns aFlowablethat emits the specified items before it begins to emit items emitted by the currentFlowable.
- Backpressure:
- The operator honors backpressure from downstream. The current
Flowableis expected to honor backpressure as well. If it violates this rule, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
startWithArraydoes not operate by default on a particularScheduler.
- Parameters:
items- the array of values to emit first- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemsisnull- See Also:
-
subscribe
@BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Disposable subscribe()Subscribes to the currentFlowableand ignoresonNextandonCompleteemissions.If the
Flowableemits an error, it is wrapped into anOnErrorNotImplementedExceptionand routed to theRxJavaPlugins.onError(Throwable)handler.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
subscribedoes not operate by default on a particularScheduler.
- Returns:
- the new
Disposableinstance that allows cancelling the flow - See Also:
-
subscribe
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext) Subscribes to the currentFlowableand provides a callback to handle the items it emits.If the
Flowableemits an error, it is wrapped into anOnErrorNotImplementedExceptionand routed to theRxJavaPlugins.onError(Throwable)handler.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
subscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- theConsumer<T>you have designed to accept emissions from the currentFlowable- Returns:
- the new
Disposableinstance that allows cancelling the flow - Throws:
NullPointerException- ifonNextisnull- See Also:
-
subscribe
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError) Subscribes to the currentFlowableand provides callbacks to handle the items it emits and any error notification it issues.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
subscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- theConsumer<T>you have designed to accept emissions from the currentFlowableonError- theConsumer<Throwable>you have designed to accept any error notification from the currentFlowable- Returns:
- the new
Disposableinstance that allows cancelling the flow - Throws:
NullPointerException- ifonNextoronErrorisnull- See Also:
-
subscribe
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete) Subscribes to the currentFlowableand provides callbacks to handle the items it emits and any error or completion notification it issues.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
subscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- theConsumer<T>you have designed to accept emissions from the currentFlowableonError- theConsumer<Throwable>you have designed to accept any error notification from the currentFlowableonComplete- theActionyou have designed to accept a completion notification from the the currentFlowable- Returns:
- the new
Disposableinstance that allows cancelling the flow - Throws:
NullPointerException- ifonNext,onErrororonCompleteisnull- See Also:
-
subscribe
@BackpressureSupport(SPECIAL) @SchedulerSupport("none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super @NonNull T> onNext, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete, @NonNull @NonNull DisposableContainer container) Wraps the given onXXX callbacks into aDisposableFlow.Subscriber, adds it to the givenDisposableContainerand ensures, that if the upstream terminates or this particularDisposableis disposed, theSubscriberis removed from the given container.The
Subscriberwill be removed after the callback for the terminal event has been invoked.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
subscribedoes not operate by default on a particularScheduler.
- Parameters:
onNext- the callback for upstream itemsonError- the callback for an upstream error if anyonComplete- the callback for the upstream completion if anycontainer- theDisposableContainer(such asCompositeDisposable) to add and remove the createdDisposableSubscriber- Returns:
- the
Disposablethat allows disposing the particular subscription. - Throws:
NullPointerException- ifonNext,onError,onCompleteorcontainerisnull- Since:
- 3.1.0
-
subscribe
@BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final void subscribe(@NonNull @NonNull Flow.Subscriber<? super @NonNull T> subscriber) - Specified by:
subscribein interfaceFlow.Publisher<T>
-
subscribe
@BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final void subscribe(@NonNull @NonNull FlowableSubscriber<? super @NonNull T> subscriber) Establish a connection between thisFlowableand the givenFlowableSubscriberand start streaming events based on the demand of theFlowableSubscriber.This is a "factory method" and can be called multiple times, each time starting a new
Flow.Subscription.Each
Subscriptionwill work for only a singleFlowableSubscriber.If the same
FlowableSubscriberinstance is subscribed to multipleFlowables and/or the sameFlowablemultiple times, it must ensure the serialization over itsonXXXmethods manually.If the
Flowablerejects the subscription attempt or otherwise fails it will signal the error viaFlow.Subscriber.onError(Throwable).This subscribe method relaxes the following Reactive Streams rules:
- §1.3:
onNextshould not be called concurrently untilonSubscribereturns.FlowableSubscriber.onSubscribe(Subscription)should make sure a sync or async call triggered by request() is safe. - §2.3:
onErrororonCompletemust not call cancel. Calling request() or cancel() is NOP at this point. - §2.12:
onSubscribemust be called at most once on the same instance.FlowableSubscriberreuse is not checked and if happens, it is the responsibility of theFlowableSubscriberto ensure proper serialization of its onXXX methods. - §3.9: negative requests should emit an
onError(IllegalArgumentException). Non-positive requests signal viaRxJavaPlugins.onError(Throwable)and the stream is not affected.
- Backpressure:
- The backpressure behavior/expectation is determined by the supplied
FlowableSubscriber. - Scheduler:
subscribedoes not operate by default on a particularScheduler.
History: 2.0.7 - experimental; 2.1 - beta
- Parameters:
subscriber- theFlowableSubscriberthat will consume signals from thisFlowable- Throws:
NullPointerException- ifsubscriberisnull- Since:
- 2.2
- §1.3:
-
subscribeActual
protected abstract void subscribeActual(@NonNull @NonNull Flow.Subscriber<? super @NonNull T> subscriber) Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingFlow.Subscribers.There is no need to call any of the plugin hooks on the current
Flowableinstance or theSubscriber; all hooks and basic safeguards have been applied bysubscribe(Subscriber)before this method gets called.- Parameters:
subscriber- the incomingSubscriber, nevernull
-
subscribeWith
@CheckReturnValue @BackpressureSupport(SPECIAL) @SchedulerSupport("none") @NonNull public final <@NonNull E extends Flow.Subscriber<? super @NonNull T>> E subscribeWith(@NonNull E subscriber) Subscribes a givenFlow.Subscriber(subclass) to thisFlowableand returns the givenSubscriberas is.Usage example:
Flowable<Integer> source = Flowable.range(1, 10); CompositeDisposable composite = new CompositeDisposable(); ResourceSubscriber<Integer> rs = new ResourceSubscriber<>() { // ... }; composite.add(source.subscribeWith(rs));- Backpressure:
- The backpressure behavior/expectation is determined by the supplied
Subscriber. - Scheduler:
subscribeWithdoes not operate by default on a particularScheduler.
- Type Parameters:
E- the type of theSubscriberto use and return- Parameters:
subscriber- theSubscriber(subclass) to use and return, notnull- Returns:
- the input
subscriber - Throws:
NullPointerException- ifsubscriberisnull- Since:
- 2.0
-
subscribeOn
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("custom") public final @NonNull Flowable<T> subscribeOn(@NonNull @NonNull Scheduler scheduler) Asynchronously subscribesFlow.Subscribers to the currentFlowableon the specifiedScheduler.If there is a
create(FlowableOnSubscribe, BackpressureStrategy)type source up in the chain, it is recommended to usesubscribeOn(scheduler, false)instead to avoid same-pool deadlock because requests may pile up behind an eager/blocking emitter.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
scheduler- theSchedulerto perform subscription actions on- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
subscribeOn
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("custom") public final @NonNull Flowable<T> subscribeOn(@NonNull @NonNull Scheduler scheduler, boolean requestOn) Asynchronously subscribesFlow.Subscribers to the currentFlowableon the specifiedScheduleroptionally reroutes requests from other threads to the sameSchedulerthread.If there is a
create(FlowableOnSubscribe, BackpressureStrategy)type source up in the chain, it is recommended to haverequestOnfalseto avoid same-pool deadlock because requests may pile up behind an eager/blocking emitter.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- You specify which
Schedulerthis operator will use.
History: 2.1.1 - experimental
- Parameters:
scheduler- theSchedulerto perform subscription actions onrequestOn- iftrue, requests are rerouted to the givenScheduleras well (strong pipelining) iffalse, requests coming from any thread are simply forwarded to the upstream on the same thread (weak pipelining)- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- Since:
- 2.2
- See Also:
-
switchIfEmpty
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final @NonNull Flowable<T> switchIfEmpty(@NonNull @NonNull Flow.Publisher<? extends @NonNull T> other) Returns aFlowablethat emits the items emitted by the currentFlowableor the items of an alternateFlow.Publisherif the currentFlowableis empty.
- Backpressure:
- If the current
Flowableis empty, the alternatePublisheris expected to honor backpressure. If the currentFlowableis non-empty, it is expected to honor backpressure as instead. In either case, if violated, aMissingBackpressureExceptionmay get signaled somewhere downstream. - Scheduler:
switchIfEmptydoes not operate by default on a particularScheduler.
- Parameters:
other- the alternatePublisherto subscribe to if the source does not emit any items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- Since:
- 1.1.0
-
switchMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> switchMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers.The resulting
Flowablecompletes if both the currentFlowableand the last innerPublisher, if any, complete. If the currentFlowablesignals anonError, the innerPublisheris canceled and the error delivered in-sequence.
- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of the innerPublishers and the output- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- See Also:
-
switchMap
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> switchMap(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int bufferSize) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers.The resulting
Flowablecompletes if both the currentFlowableand the last innerPublisher, if any, complete. If the currentFlowablesignals anonError, the innerPublisheris canceled and the error delivered in-sequence.
- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchMapdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of the innerPublishers and the output- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherbufferSize- the number of elements to prefetch from the current active innerPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
switchMapCompletable
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Completable switchMapCompletable(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream values intoCompletableSources, subscribes to the newer one while disposing the subscription to the previousCompletableSource, thus keeping at most one activeCompletableSourcerunning.
Since a
CompletableSourcedoesn't produce any items, the resulting reactive type of this operator is aCompletablethat can only indicate successful completion or a failure in any of the innerCompletableSources or the failure of the currentFlowable.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner and otherwise does not have backpressure in its return type because no items are ever produced. - Scheduler:
switchMapCompletabledoes not operate by default on a particularScheduler.- Error handling:
- If either this
Flowableor the activeCompletableSourcesignals anonError, the resultingCompletableis terminated immediately with thatThrowable. Use theswitchMapCompletableDelayError(Function)to delay such inner failures until every innerCompletableSources and the mainFlowableterminates in some fashion. If they fail concurrently, the operator may combine theThrowables into aCompositeExceptionand signal it to the downstream instead. If any inactivated (switched out)CompletableSourcesignals anonErrorlate, theThrowables will be signaled to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with each upstream item and should return aCompletableSourceto be subscribed to and awaited for (non blockingly) for its terminal event- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
switchMapCompletableDelayError
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Completable switchMapCompletableDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends CompletableSource> mapper) Maps the upstream values intoCompletableSources, subscribes to the newer one while disposing the subscription to the previousCompletableSource, thus keeping at most one activeCompletableSourcerunning and delaying any main or inner errors until all of them terminate.
Since a
CompletableSourcedoesn't produce any items, the resulting reactive type of this operator is aCompletablethat can only indicate successful completion or a failure in any of the innerCompletableSources or the failure of the currentFlowable.- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner and otherwise does not have backpressure in its return type because no items are ever produced. - Scheduler:
switchMapCompletableDelayErrordoes not operate by default on a particularScheduler.- Error handling:
- The errors of this
Flowableand all theCompletableSources, 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 respectiveThrowableis emitted to the downstream. If there was more than one failure, the operator combines allThrowables into aCompositeExceptionand signals that to the downstream. If any inactivated (switched out)CompletableSourcesignals anonErrorlate, theThrowables will be signaled to the global error handler viaRxJavaPlugins.onError(Throwable)method asUndeliverableExceptionerrors.
History: 2.1.11 - experimental
- Parameters:
mapper- the function called with each upstream item and should return aCompletableSourceto be subscribed to and awaited for (non blockingly) for its terminal event- Returns:
- the new
Completableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
switchMapDelayError
@CheckReturnValue @BackpressureSupport(SPECIAL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> switchMapDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers and delays any error until allPublishers terminate.The resulting
Flowablecompletes if both the currentFlowableand the last innerPublisher, if any, complete. If the currentFlowablesignals anonError, the termination of the last innerPublisherwill emit that error as is or wrapped into aCompositeExceptionalong with the other possible errors the former innerPublishers signaled.
- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchMapDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of the innerPublishers and the output- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.0
- See Also:
-
switchMapDelayError
@CheckReturnValue @BackpressureSupport(SPECIAL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> switchMapDelayError(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<? extends @NonNull R>> mapper, int bufferSize) Returns a newFlowableby applying a function that you supply to each item emitted by the currentFlowablethat returns aFlow.Publisher, and then emitting the items emitted by the most recently emitted of thesePublishers and delays any error until allPublishers terminate.The resulting
Flowablecompletes if both the currentFlowableand the last innerPublisher, if any, complete. If the currentFlowablesignals anonError, the termination of the last innerPublisherwill emit that error as is or wrapped into aCompositeExceptionalong with the other possible errors the former innerPublishers signaled.
- Backpressure:
- The operator honors backpressure from downstream. The outer
Publisheris consumed in an unbounded manner (i.e., without backpressure) and the innerPublishers are expected to honor backpressure but it is not enforced; the operator won't signal aMissingBackpressureExceptionbut the violation may lead toOutOfMemoryErrordue to internal buffer bloat. - Scheduler:
switchMapDelayErrordoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of the innerPublishers and the output- Parameters:
mapper- a function that, when applied to an item emitted by the currentFlowable, returns aPublisherbufferSize- the number of elements to prefetch from the current active innerPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.0
- See Also:
-
switchMapMaybe
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> switchMapMaybe(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources 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 thisFlowableor any of the active innerMaybeSources fail.
- Backpressure:
- The operator honors backpressure from downstream. The main
Flowableis consumed in an unbounded manner (i.e., without backpressure). - Scheduler:
switchMapMaybedoes not operate by default on a particularScheduler.- Error handling:
- This operator terminates with an
onErrorif thisFlowableor any of the innerMaybeSources fail while they are active. When this happens concurrently, their individualThrowableerrors may get combined and emitted as a singleCompositeException. Otherwise, a late (i.e., inactive or switched out)onErrorfrom thisFlowableor from any of the innerMaybeSources will be forwarded to the global error handler viaRxJavaPlugins.onError(Throwable)asUndeliverableException
History: 2.1.11 - experimental
- Type Parameters:
R- the output value type- Parameters:
mapper- the function called with the current upstream event and should return aMaybeSourceto replace the current active inner source and get subscribed to.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
switchMapMaybeDelayError
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> switchMapMaybeDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends MaybeSource<? extends @NonNull R>> mapper) Maps the upstream items intoMaybeSources 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 thisFlowableor the innerMaybeSources until all terminate.
- Backpressure:
- The operator honors backpressure from downstream. The main
Flowableis consumed in an unbounded manner (i.e., without backpressure). - Scheduler:
switchMapMaybeDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the output value type- Parameters:
mapper- the function called with the current upstream event and should return aMaybeSourceto replace the current active inner source and get subscribed to.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
switchMapSingle
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> switchMapSingle(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources 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 while failing immediately if thisFlowableor any of the active innerSingleSources fail.
- Backpressure:
- The operator honors backpressure from downstream. The main
Flowableis consumed in an unbounded manner (i.e., without backpressure). - Scheduler:
switchMapSingledoes not operate by default on a particularScheduler.- Error handling:
- This operator terminates with an
onErrorif thisFlowableor any of the innerSingleSources fail while they are active. When this happens concurrently, their individualThrowableerrors may get combined and emitted as a singleCompositeException. Otherwise, a late (i.e., inactive or switched out)onErrorfrom thisFlowableor from any of the innerSingleSources will be forwarded to the global error handler viaRxJavaPlugins.onError(Throwable)asUndeliverableException
History: 2.1.11 - experimental
- Type Parameters:
R- the output value type- Parameters:
mapper- the function called with the current upstream event and should return aSingleSourceto replace the current active inner source and get subscribed to.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
switchMapSingleDelayError
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> switchMapSingleDelayError(@NonNull @NonNull Function<? super @NonNull T, ? extends SingleSource<? extends @NonNull R>> mapper) Maps the upstream items intoSingleSources 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, delaying errors from thisFlowableor the innerSingleSources until all terminate.
- Backpressure:
- The operator honors backpressure from downstream. The main
Flowableis consumed in an unbounded manner (i.e., without backpressure). - Scheduler:
switchMapSingleDelayErrordoes not operate by default on a particularScheduler.
History: 2.1.11 - experimental
- Type Parameters:
R- the output value type- Parameters:
mapper- the function called with the current upstream event and should return aSingleSourceto replace the current active inner source and get subscribed to.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 2.2
- See Also:
-
take
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> take(long count) Returns aFlowablethat emits only the firstcountitems emitted by the currentFlowable. If the source emits fewer thancountitems then all of its items are emitted.
This method returns a
Flowablethat will invoke a subscribingFlow.Subscriber'sonNextfunction a maximum ofcounttimes before invokingonComplete.Limits both the number of upstream items (after which the sequence completes) and the total downstream request amount requested from the upstream to possibly prevent the creation of excess items by the upstream.
The operator requests at most the given
countof items from upstream even if the downstream requests more than that. For example, given atake(5), if the downstream requests 1, a request of 1 is submitted to the upstream and the operator remembers that only 4 items can be requested now on. A request of 5 at this point will request 4 from the upstream and any subsequent requests will be ignored.Note that requests are negotiated on an operator boundary and
take's amount may not be preserved further upstream. For example,source.observeOn(Schedulers.computation()).take(5)will still request the default (128) elements from the givensource.- Backpressure:
- The current
Flowableis consumed in a bounded manner. - Scheduler:
- This version of
takedoes not operate by default on a particularScheduler.
- Parameters:
count- the maximum number of items and the total request amount, non-negative. Zero will immediately cancel the upstream on subscription and complete the downstream.- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis negative- See Also:
-
take
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> take(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits those items emitted by sourceFlow.Publisherbefore a specified time runs out.If time runs out before the
Flowablecompletes normally, theonCompleteevent will be signaled on the defaultcomputationScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This version of
takeoperates by default on thecomputationScheduler.
- Parameters:
time- the length of the time windowunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
take
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> take(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits those items emitted by sourceFlow.Publisherbefore a specified time (on a specifiedScheduler) runs out.If time runs out before the
Flowablecompletes normally, theonCompleteevent will be signaled on the providedScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- theSchedulerused for time source- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> takeLast(int count) Returns aFlowablethat emits at most the lastcountitems emitted by the currentFlowable. If the source emits fewer thancountitems then all of its items are emitted.
- Backpressure:
- The operator honors backpressure from downstream if the
countis non-zero; ignores backpressure if thecountis zero as it doesn't signal any values. - Scheduler:
- This version of
takeLastdoes not operate by default on a particularScheduler.
- Parameters:
count- the maximum number of items to emit from the end of the sequence of items emitted by the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis negative- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<T> takeLast(long count, long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
takeLastdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
count- the maximum number of items to emittime- the length of the time windowunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifcountis negative- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> takeLast(long count, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a givenScheduler.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use for tracking the current time
- Parameters:
count- the maximum number of items to emittime- the length of the time windowunit- the time unit oftimescheduler- theSchedulerthat provides the timestamps for the observed items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis less than zero- See Also:
-
takeLast
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final @NonNull Flowable<T> takeLast(long count, long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat emits at most a specified number of items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a givenScheduler.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it). - Scheduler:
- You specify which
Schedulerthis operator will use for tracking the current time
- Parameters:
count- the maximum number of items to emittime- the length of the time windowunit- the time unit oftimescheduler- theSchedulerthat provides the timestamps for the observed itemsdelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements droppedbufferSize- the hint about how many elements to expect to be last- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis negative orbufferSizeis non-positive- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> takeLast(long time, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it) but note that this may lead toOutOfMemoryErrordue to internal buffer bloat. Consider usingtakeLast(long, long, TimeUnit)in this case. - Scheduler:
- This version of
takeLastoperates by default on thecomputationScheduler.
- Parameters:
time- the length of the time windowunit- the time unit oftime- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> takeLast(long time, @NonNull @NonNull TimeUnit unit, boolean delayError) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it) but note that this may lead toOutOfMemoryErrordue to internal buffer bloat. Consider usingtakeLast(long, long, TimeUnit)in this case. - Scheduler:
- This version of
takeLastoperates by default on thecomputationScheduler.
- Parameters:
time- the length of the time windowunit- the time unit oftimedelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements dropped- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> takeLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it) but note that this may lead toOutOfMemoryErrordue to internal buffer bloat. Consider usingtakeLast(long, long, TimeUnit, Scheduler)in this case. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- theSchedulerthat provides the timestamps for the observed items- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> takeLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it) but note that this may lead toOutOfMemoryErrordue to internal buffer bloat. Consider usingtakeLast(long, long, TimeUnit, Scheduler)in this case. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- theSchedulerthat provides the timestamps for the observed itemsdelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements dropped- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
takeLast
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> takeLast(long time, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean delayError, int bufferSize) Returns aFlowablethat emits the items from the currentFlowablethat were emitted in a specified window of time before the currentFlowablecompleted, where the timing information is provided by a specifiedScheduler.
- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., no backpressure is applied to it) but note that this may lead toOutOfMemoryErrordue to internal buffer bloat. Consider usingtakeLast(long, long, TimeUnit, Scheduler)in this case. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
time- the length of the time windowunit- the time unit oftimescheduler- theSchedulerthat provides the timestamps for the observed itemsdelayError- iftrue, an exception signaled by the currentFlowableis delayed until the regular elements are consumed by the downstream; iffalse, an exception is immediately signaled and all regular elements droppedbufferSize- the hint about how many elements to expect to be last- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
takeUntil
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> takeUntil(@NonNull @NonNull Predicate<? super @NonNull T> stopPredicate) Returns aFlowablethat emits items emitted by the currentFlowable, 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.- Backpressure:
- The operator is a pass-through for backpressure; the backpressure behavior is determined by the upstream source and the downstream consumer.
- Scheduler:
takeUntildoes not operate by default on a particularScheduler.
- Parameters:
stopPredicate- a function that evaluates an item emitted by the currentFlowableand returns aBoolean- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifstopPredicateisnull- Since:
- 1.1.0
- See Also:
-
takeUntil
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull U> @NonNull Flowable<T> takeUntil(@NonNull @NonNull Flow.Publisher<@NonNull U> other) Returns aFlowablethat emits the items emitted by the currentFlowableuntil a secondFlow.Publisheremits an item or completes.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
takeUntildoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted byother- Parameters:
other- thePublisherwhose first emitted item or completion will causetakeUntilto stop emitting items from the currentFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherisnull- See Also:
-
takeWhile
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<T> takeWhile(@NonNull @NonNull Predicate<? super @NonNull T> predicate) Returns aFlowablethat emits items emitted by the currentFlowableso long as each item satisfied a specified condition, and then completes as soon as this condition is not satisfied.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
takeWhiledoes not operate by default on a particularScheduler.
- Parameters:
predicate- a function that evaluates an item emitted by the currentFlowableand returns aBoolean- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifpredicateisnull- See Also:
-
throttleFirst
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> throttleFirst(long windowDuration, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration.This differs from
throttleLast(long, TimeUnit)in that this only tracks the passage of time whereasthrottleLast(long, TimeUnit)ticks at scheduled intervals.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
throttleFirstoperates by default on thecomputationScheduler.
- Parameters:
windowDuration- time to wait before emitting another item after emitting the last itemunit- the unit of time ofwindowDuration- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
throttleFirst
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> throttleFirst(long skipDuration, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration, where the windows are managed by a specifiedScheduler.This differs from
throttleLast(long, TimeUnit)in that this only tracks the passage of time whereasthrottleLast(long, TimeUnit)ticks at scheduled intervals.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
skipDuration- time to wait before emitting another item after emitting the last itemunit- the unit of time ofskipDurationscheduler- theSchedulerto use internally to manage the timers that handle timeout for each event- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
throttleFirst
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> throttleFirst(long skipDuration, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits only the first item emitted by the currentFlowableduring sequential time windows of a specified duration, where the windows are managed by a specifiedScheduler.This differs from
throttleLast(long, TimeUnit)in that this only tracks the passage of time whereasthrottleLast(long, TimeUnit)ticks at scheduled intervals.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
skipDuration- time to wait before emitting another item after emitting the last itemunit- the unit of time ofskipDurationscheduler- theSchedulerto use internally to manage the timers that handle timeout for each eventonDropped- called when an item doesn't get delivered to the downstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorscheduleroronDroppedisnull- Since:
- 3.1.6 - Experimental
- See Also:
-
throttleLast
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> throttleLast(long intervalDuration, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration.This differs from
throttleFirst(long, TimeUnit)in that this ticks along at a scheduled interval whereasthrottleFirst(long, TimeUnit)does not tick, it just tracks the passage of time.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
throttleLastoperates by default on thecomputationScheduler.
- Parameters:
intervalDuration- duration of windows within which the last item emitted by the currentFlowablewill be emittedunit- the unit of time ofintervalDuration- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
throttleLast
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> throttleLast(long intervalDuration, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration, where the duration is governed by a specifiedScheduler.This differs from
throttleFirst(long, TimeUnit, Scheduler)in that this ticks along at a scheduled interval whereasthrottleFirstdoes not tick, it just tracks the passage of time.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
intervalDuration- duration of windows within which the last item emitted by the currentFlowablewill be emittedunit- the unit of time ofintervalDurationscheduler- theSchedulerto use internally to manage the timers that handle timeout for each event- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
throttleLast
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> throttleLast(long intervalDuration, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat emits only the last item emitted by the currentFlowableduring sequential time windows of a specified duration, where the duration is governed by a specifiedScheduler.This differs from
throttleFirst(long, TimeUnit, Scheduler)in that this ticks along at a scheduled interval whereasthrottleFirstdoes not tick, it just tracks the passage of time.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
intervalDuration- duration of windows within which the last item emitted by the currentFlowablewill be emittedunit- the unit of time ofintervalDurationscheduler- theSchedulerto 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 one- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnulloronDroppedisnull- Since:
- 3.1.6 - Experimental
- See Also:
-
throttleLatest
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> throttleLatest(long timeout, @NonNull @NonNull TimeUnit unit) Throttles items from the upstreamFlowableby 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.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
If the downstream is not ready to receive items, a
MissingBackpressureExceptionwill be signaled. - Scheduler:
throttleLatestoperates by default on thecomputationScheduler.
History: 2.1.14 - experimental
- Parameters:
timeout- the time to wait after an item emission towards the downstream before trying to emit the latest item from upstream againunit- the time unit- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- Since:
- 2.2
- See Also:
-
throttleLatest
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> throttleLatest(long timeout, @NonNull @NonNull TimeUnit unit, boolean emitLast) Throttles items from the upstreamFlowableby 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.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
If the downstream is not ready to receive items, a
MissingBackpressureExceptionwill be signaled. - Scheduler:
throttleLatestoperates by default on thecomputationScheduler.
History: 2.1.14 - experimental
- Parameters:
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- Iftrue, 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. Iffalse, the very last upstream item is ignored and the flow terminates.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- Since:
- 2.2
- See Also:
-
throttleLatest
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> throttleLatest(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Throttles items from the upstreamFlowableby 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.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
If the downstream is not ready to receive items, a
MissingBackpressureExceptionwill be signaled. - Scheduler:
- You specify which
Schedulerthis operator will use.
History: 2.1.14 - experimental
- Parameters:
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- theSchedulerwhere the timed wait and latest item emission will be performed- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- Since:
- 2.2
- See Also:
-
throttleLatest
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> throttleLatest(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean emitLast) Throttles items from the upstreamFlowableby 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.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
If the downstream is not ready to receive items, a
MissingBackpressureExceptionwill be signaled. - Scheduler:
- You specify which
Schedulerthis operator will use.
History: 2.1.14 - experimental
- Parameters:
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- theSchedulerwhere the timed wait and latest item emission will be performedemitLast- Iftrue, 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. Iffalse, the very last upstream item is ignored and the flow terminates.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- Since:
- 2.2
-
throttleLatest
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<T> throttleLatest(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, boolean emitLast, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Throttles items from the upstreamFlowableby 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.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
If the downstream is not ready to receive items, a
MissingBackpressureExceptionwill be signaled. - Scheduler:
- You specify which
Schedulerthis operator will use. - Error handling:
-
If the upstream signals an
onErrororonDroppedcallback crashes, the error is delivered immediately to the downstream. If both happen, aCompositeExceptionis created, containing both the upstream and the callback error. If theonDroppedcallback crashes during cancellation, the exception is forwarded to the global error handler viaRxJavaPlugins.onError(Throwable).
- Parameters:
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- theSchedulerwhere the timed wait and latest item emission will be performedemitLast- Iftrue, 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. Iffalse, 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 ifemitLastisfalseand the current undelivered item when the sequence gets canceled.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunit,scheduleroronDroppedisnull- Since:
- 3.1.6 - Experimental
-
throttleWithTimeout
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> throttleWithTimeout(long timeout, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires. The timer resets on each emission (alias todebounce(long, TimeUnit)).Note: If items keep being emitted by the current
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
throttleWithTimeoutoperates by default on thecomputationScheduler.
- Parameters:
timeout- the length of the window of time that must pass after the emission of an item from the currentFlowablein which it emits no items in order for the item to be emitted by the resultingFlowableunit- the unit of time for the specifiedtimeout- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
throttleWithTimeout
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> throttleWithTimeout(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler. The timer resets on each emission (alias todebounce(long, TimeUnit, Scheduler)).Note: If items keep being emitted by the current
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- the length of the window of time that must pass after the emission of an item from the currentFlowablein which it emits no items in order for the item to be emitted by the resultingFlowableunit- the unit of time for the specifiedtimeoutscheduler- theSchedulerto use internally to manage the timers that handle the timeout for each item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
throttleWithTimeout
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> throttleWithTimeout(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Consumer<? super @NonNull T> onDropped) Returns aFlowablethat mirrors the currentFlowable, except that it drops items emitted by the currentFlowablethat are followed by newer items before a timeout value expires on a specifiedScheduler. The timer resets on each emission (alias todebounce(long, TimeUnit, Scheduler, Consumer)).Note: If items keep being emitted by the current
Flowablefaster than the timeout then no items will be emitted by the resultingFlowable.
- Backpressure:
- This operator does not support backpressure as it uses time to control data flow.
- Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- the length of the window of time that must pass after the emission of an item from the currentFlowablein which it emits no items in order for the item to be emitted by the resultingFlowableunit- the unit of time for the specifiedtimeoutscheduler- theSchedulerto 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 one- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnulloronDroppedisnull- Since:
- 3.1.6 - Experimental
- See Also:
-
timeInterval
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timeInterval()Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timeIntervaldoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
timeInterval
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timeInterval(@NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable, where this interval is computed on a specifiedScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timeIntervaldoes not operate on any particular scheduler but uses the current time from the specifiedScheduler.
- Parameters:
scheduler- theSchedulerused to compute time intervals- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
timeInterval
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timeInterval(@NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timeIntervaldoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
unit- the time unit for the current time- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
timeInterval
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timeInterval(@NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits records of the time interval between consecutive items emitted by the currentFlowable, where this interval is computed on a specifiedScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timeIntervaldoes not operate on any particular scheduler but uses the current time from the specifiedScheduler.
- Parameters:
unit- the time unit for the current timescheduler- theSchedulerused to compute time intervals- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
timeout
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final <@NonNull V> @NonNull Flowable<T> timeout(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator) Returns aFlowablethat mirrors the currentFlowable, but notifiesFlow.Subscribers of aTimeoutExceptionif an item emitted by the currentFlowabledoesn't arrive within a window of time after the emission of the previous item, where that period of time is measured by aFlow.Publisherthat is a function of the previous item.
Note: The arrival of the first source item is never timed out.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the currentFlowables violate this, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
- This version of
timeoutoperates by default on theimmediateScheduler.
- Type Parameters:
V- the timeout value type (ignored)- Parameters:
itemTimeoutIndicator- a function that returns aPublisherfor each item emitted by the currentFlowableand that determines the timeout window for the subsequent item- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemTimeoutIndicatorisnull- See Also:
-
timeout
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull V> @NonNull Flowable<T> timeout(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowable, but that switches to a fallbackFlow.Publisherif an item emitted by the currentFlowabledoesn't arrive within a window of time after the emission of the previous item, where that period of time is measured by aPublisherthat is a function of the previous item.
Note: The arrival of the first source item is never timed out.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the currentFlowables violate this, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
- This version of
timeoutoperates by default on theimmediateScheduler.
- Type Parameters:
V- the timeout value type (ignored)- Parameters:
itemTimeoutIndicator- a function that returns aPublisher, for each item emitted by the currentFlowable, that determines the timeout window for the subsequent itemfallback- the fallbackPublisherto switch to if the currentFlowabletimes out- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifitemTimeoutIndicatororfallbackisnull- See Also:
-
timeout
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<T> timeout(long timeout, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat mirrors the currentFlowablebut 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 resultingFlowableterminates and notifiesFlow.Subscribers of aTimeoutException.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This version of
timeoutoperates by default on thecomputationScheduler.
- Parameters:
timeout- maximum duration between emitted items before a timeout occursunit- the unit of time that applies to thetimeoutargument.- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
timeout
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("io.reactivex:computation") public final @NonNull Flowable<T> timeout(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowablebut 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 currentFlowableis disposed and the resultingFlowablebegins instead to mirror a fallbackFlow.Publisher.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the currentFlowables violate this, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
- This version of
timeoutoperates by default on thecomputationScheduler.
- Parameters:
timeout- maximum duration between items before a timeout occursunit- the unit of time that applies to thetimeoutargumentfallback- the fallbackPublisherto use in case of a timeout- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorfallbackisnull- See Also:
-
timeout
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("custom") public final @NonNull Flowable<T> timeout(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item using a specifiedScheduler. If the next item isn't emitted within the specified timeout duration starting from its predecessor, the currentFlowableis disposed and the resultingFlowablebegins instead to mirror a fallbackFlow.Publisher.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the currentFlowables violate this, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- maximum duration between items before a timeout occursunit- the unit of time that applies to thetimeoutargumentscheduler- theSchedulerto run the timeout timers onfallback- thePublisherto use as the fallback in case of a timeout- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunit,schedulerorfallbackisnull- See Also:
-
timeout
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<T> timeout(long timeout, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat mirrors the currentFlowablebut applies a timeout policy for each emitted item, where this policy is governed by a specifiedScheduler. If the next item isn't emitted within the specified timeout duration starting from its predecessor, the resultingFlowableterminates and notifiesFlow.Subscribers of aTimeoutException.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
timeout- maximum duration between items before a timeout occursunit- the unit of time that applies to thetimeoutargumentscheduler- theSchedulerto run the timeout timers on- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
timeout
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull U, @NonNull V> @NonNull Flowable<T> timeout(@NonNull @NonNull Flow.Publisher<@NonNull U> firstTimeoutIndicator, @NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator) Returns aFlowablethat mirrors the currentFlowable, but notifiesFlow.Subscribers of aTimeoutExceptionif either the first item emitted by the currentFlowableor any subsequent item doesn't arrive within time windows defined by otherFlow.Publishers.
- Backpressure:
- The operator honors backpressure from downstream. Both this and the returned
Publishers are expected to honor backpressure as well. If any of then violates this rule, it may throw anIllegalStateExceptionwhen thePublishercompletes. - Scheduler:
timeoutdoes not operate by default on anyScheduler.
- Type Parameters:
U- the first timeout value type (ignored)V- the subsequent timeout value type (ignored)- Parameters:
firstTimeoutIndicator- a function that returns aPublisherthat determines the timeout window for the first source itemitemTimeoutIndicator- a function that returns aPublisherfor each item emitted by the currentFlowableand that determines the timeout window in which the subsequent source item must arrive in order to continue the sequence- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffirstTimeoutIndicatororitemTimeoutIndicatorisnull- See Also:
-
timeout
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull V> @NonNull Flowable<T> timeout(@NonNull @NonNull Flow.Publisher<@NonNull U> firstTimeoutIndicator, @NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Flow.Publisher<@NonNull V>> itemTimeoutIndicator, @NonNull @NonNull Flow.Publisher<? extends @NonNull T> fallback) Returns aFlowablethat mirrors the currentFlowable, but switches to a fallbackFlow.Publisherif either the first item emitted by the currentFlowableor any subsequent item doesn't arrive within time windows defined by otherPublishers.
- Backpressure:
- The operator honors backpressure from downstream. The
Publishersources are expected to honor backpressure as well. If any of the currentFlowables violate this, it may throw anIllegalStateExceptionwhen the currentFlowablecompletes. - Scheduler:
timeoutdoes not operate by default on anyScheduler.
- Type Parameters:
U- the first timeout value type (ignored)V- the subsequent timeout value type (ignored)- Parameters:
firstTimeoutIndicator- a function that returns aPublisherwhich determines the timeout window for the first source itemitemTimeoutIndicator- a function that returns aPublisherfor each item emitted by the currentFlowableand that determines the timeout window in which the subsequent source item must arrive in order to continue the sequencefallback- the fallbackPublisherto switch to if the currentFlowabletimes out- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- iffirstTimeoutIndicator,itemTimeoutIndicatororfallbackisnull- See Also:
-
timestamp
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timestamp()Returns aFlowablethat emits each item emitted by the currentFlowable, wrapped in aTimedobject.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timestampdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Returns:
- the new
Flowableinstance - See Also:
-
timestamp
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timestamp(@NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits each item emitted by the currentFlowable, wrapped in aTimedobject whose timestamps are provided by a specifiedScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This operator does not operate on any particular scheduler but uses the current time
from the specified
Scheduler.
- Parameters:
scheduler- theSchedulerto use as a time source- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
timestamp
@CheckReturnValue @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Timed<T>> timestamp(@NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits each item emitted by the currentFlowable, wrapped in aTimedobject.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
timestampdoes not operate on any particular scheduler but uses the current time from thecomputationScheduler.
- Parameters:
unit- the time unit for the current time- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
timestamp
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final @NonNull Flowable<Timed<T>> timestamp(@NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits each item emitted by the currentFlowable, wrapped in aTimedobject whose timestamps are provided by a specifiedScheduler.
- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- This operator does not operate on any particular scheduler but uses the current time
from the specified
Scheduler.
- Parameters:
unit- the time unit for the current timescheduler- theSchedulerto use as a time source- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
to
@CheckReturnValue @BackpressureSupport(SPECIAL) @SchedulerSupport("none") public final <@NonNull R> R to(@NonNull @NonNull FlowableConverter<@NonNull T, ? extends @NonNull R> converter) Calls the specified converter function during assembly time and returns its resulting value.This allows fluent conversion to any other type.
- Backpressure:
- The backpressure behavior depends on what happens in the
converterfunction. - Scheduler:
todoes not operate by default on a particularScheduler.
History: 2.1.7 - experimental
- Type Parameters:
R- the resulting object type- Parameters:
converter- the function that receives the currentFlowableinstance and returns a value- Returns:
- the converted value
- Throws:
NullPointerException- ifconverterisnull- Since:
- 2.2
-
toList
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<List<T>> toList()Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite upstream sourceFlow.Publisher.
Normally, a
Publisherthat returns multiple items will do so by invoking itsFlow.Subscriber'sonNextmethod for each such item. You can change this behavior by having the operator compose a list of all of these items and then to invoke theSingleObserver'sonSuccessmethod once, passing it the entire list, by calling theFlowable'stoListmethod prior to calling itssubscribe()method.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toListdoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
toList
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<List<T>> toList(int capacityHint) Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite sourceFlow.Publisher.
Normally, a
Publisherthat returns multiple items will do so by invoking itsFlow.Subscriber'sonNextmethod for each such item. You can change this behavior by having the operator compose a list of all of these items and then to invoke theSingleObserver'sonSuccessmethod once, passing it the entire list, by calling theFlowable'stoListmethod prior to calling itssubscribe()method.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toListdoes not operate by default on a particularScheduler.
- Parameters:
capacityHint- the number of elements expected from the currentFlowable- Returns:
- the new
Singleinstance - Throws:
IllegalArgumentException- ifcapacityHintis non-positive- See Also:
-
toList
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull U extends Collection<? super @NonNull T>> @NonNull Single<U> toList(@NonNull @NonNull Supplier<@NonNull U> collectionSupplier) Returns aSinglethat emits a single item, a list composed of all the items emitted by the finite sourceFlow.Publisher.
Normally, a
Publisherthat returns multiple items will do so by invoking itsFlow.Subscriber'sonNextmethod for each such item. You can change this behavior by having the operator compose a collection of all of these items and then to invoke theSingleObserver'sonSuccessmethod once, passing it the entire collection, by calling theFlowable'stoListmethod prior to calling itssubscribe()method.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toListdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the subclass of a collection of Ts- Parameters:
collectionSupplier- theSupplierreturning the collection (for each individualSubscriber) to be filled in- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifcollectionSupplierisnull- See Also:
-
toMap
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull K> @NonNull Single<Map<K,T>> toMap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector) Returns aSinglethat emits a singleHashMapcontaining all items emitted by the finite sourceFlow.Publisher, mapped by the keys returned by a specifiedkeySelectorfunction.
If more than one source item maps to the same key, the
HashMapwill contain the latest of those items.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the Map- Parameters:
keySelector- the function that extracts the key from a source item to be used in theHashMap- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
toMap
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull K, @NonNull V> @NonNull Single<Map<K,V>> toMap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Returns aSinglethat emits a singleHashMapcontaining values corresponding to items emitted by the finite sourceFlow.Publisher, mapped by the keys returned by a specifiedkeySelectorfunction.
If more than one source item maps to the same key, the
HashMapwill contain a single entry that corresponds to the latest of those items.Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the MapV- the value type of the Map- Parameters:
keySelector- the function that extracts the key from a source item to be used in theHashMapvalueSelector- the function that extracts the value from a source item to be used in theHashMap- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelectororvalueSelectorisnull- See Also:
-
toMap
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull K, @NonNull V> @NonNull Single<Map<K,V>> toMap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull @NonNull Supplier<? extends Map<@NonNull K, @NonNull V>> mapSupplier) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains keys and values extracted from the items emitted by the finite sourceFlow.Publisher.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the MapV- the value type of the Map- Parameters:
keySelector- the function that extracts the key from a source item to be used in the MapvalueSelector- the function that extracts the value from the source items to be used as value in the MapmapSupplier- the function that returns aMapinstance to be used- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelector,valueSelectorormapSupplierisnull- See Also:
-
toMultimap
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull K> @NonNull Single<Map<K, Collection<T>>> toMultimap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector) Returns aSinglethat emits a singleHashMapthat contains anArrayListof items emitted by the finite sourceFlow.Publisherkeyed by a specifiedkeySelectorfunction.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- This operator does not support backpressure as by intent it is requesting and buffering everything.
- Scheduler:
toMultimapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the Map- Parameters:
keySelector- the function that extracts the key from the source items to be used as key in theHashMap- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelectorisnull- See Also:
-
toMultimap
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull K, @NonNull V> @NonNull Single<Map<K, Collection<V>>> toMultimap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector) Returns aSinglethat emits a singleHashMapthat contains anArrayListof values extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisher, keyed by a specifiedkeySelectorfunction.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMultimapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the MapV- the value type of the Map- Parameters:
keySelector- the function that extracts a key from the source items to be used as key in theHashMapvalueSelector- the function that extracts a value from the source items to be used as value in theHashMap- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelectororvalueSelectorisnull- See Also:
-
toMultimap
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final <@NonNull K, @NonNull V> @NonNull Single<Map<K, Collection<V>>> toMultimap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull @NonNull Supplier<? extends Map<@NonNull K, Collection<@NonNull V>>> mapSupplier, @NonNull @NonNull Function<? super @NonNull K, ? extends Collection<? super @NonNull V>> collectionFactory) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains a custom collection of values, extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisher, and keyed by thekeySelectorfunction.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMultimapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of the MapV- the value type of the Map- Parameters:
keySelector- the function that extracts a key from the source items to be used as the key in the MapvalueSelector- the function that extracts a value from the source items to be used as the value in theMapmapSupplier- the function that returns a Map instance to be usedcollectionFactory- the function that returns aCollectioninstance for a particular key to be used in theMap- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelector,valueSelector,mapSupplierorcollectionFactoryisnull- See Also:
-
toMultimap
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull K, @NonNull V> @NonNull Single<Map<K, Collection<V>>> toMultimap(@NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull K> keySelector, @NonNull @NonNull Function<? super @NonNull T, ? extends @NonNull V> valueSelector, @NonNull @NonNull Supplier<Map<@NonNull K, Collection<@NonNull V>>> mapSupplier) Returns aSinglethat emits a singleMap, returned by a specifiedmapFactoryfunction, that contains anArrayListof values, extracted by a specifiedvalueSelectorfunction from items emitted by the finite sourceFlow.Publisherand keyed by thekeySelectorfunction.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toMultimapdoes not operate by default on a particularScheduler.
- Type Parameters:
K- the key type of theMapV- the value type of theMap- Parameters:
keySelector- the function that extracts a key from the source items to be used as the key in theMapvalueSelector- the function that extracts a value from the source items to be used as the value in theMapmapSupplier- the function that returns aMapinstance to be used- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifkeySelector,valueSelectorormapSupplierisnull- See Also:
-
toObservable
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Observable<T> toObservable()Converts the currentFlowableinto a non-backpressuredObservable.- Backpressure:
Observables don't support backpressure thus the currentFlowableis consumed in an unbounded manner (by requestingLong.MAX_VALUE).- Scheduler:
toObservabledoes not operate by default on a particularScheduler.
- Returns:
- the new
Observableinstance - Since:
- 2.0
-
toSortedList
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<List<T>> toSortedList()Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order. Each item emitted by thePublishermust implementComparablewith respect to all other items in the sequence.If any item emitted by this
Flowabledoes not implementComparablewith respect to all other items emitted by thisFlowable, no items will be emitted and the sequence is terminated with aClassCastException.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toSortedListdoes not operate by default on a particularScheduler.
- Returns:
- the new
Singleinstance - See Also:
-
toSortedList
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<List<T>> toSortedList(@NonNull @NonNull Comparator<? super @NonNull T> comparator) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order based on a specified comparison function.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toSortedListdoes not operate by default on a particularScheduler.
- Parameters:
comparator- a function that compares two items emitted by the currentFlowableand returns anintthat indicates their sort order- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifcomparatorisnull- See Also:
-
toSortedList
@CheckReturnValue @NonNull @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") public final @NonNull Single<List<T>> toSortedList(@NonNull @NonNull Comparator<? super @NonNull T> comparator, int capacityHint) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order based on a specified comparison function.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toSortedListdoes not operate by default on a particularScheduler.
- Parameters:
comparator- a function that compares two items emitted by the currentFlowableand returns anintthat indicates their sort ordercapacityHint- the initial capacity of theArrayListused to accumulate items before sorting- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifcomparatorisnullIllegalArgumentException- ifcapacityHintis non-positive- Since:
- 2.0
- See Also:
-
toSortedList
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull Single<List<T>> toSortedList(int capacityHint) Returns aSinglethat emits aListthat contains the items emitted by the finite sourceFlow.Publisher, in a sorted order. Each item emitted by thePublishermust implementComparablewith respect to all other items in the sequence.If any item emitted by this
Flowabledoes not implementComparablewith respect to all other items emitted by thisFlowable, no items will be emitted and the sequence is terminated with aClassCastException.
Note that this operator requires the upstream to signal
onCompletefor 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 fatalOutOfMemoryError.- Backpressure:
- The operator honors backpressure from downstream and consumes the current
Flowablein an unbounded manner (i.e., without applying backpressure to it). - Scheduler:
toSortedListdoes not operate by default on a particularScheduler.
- Parameters:
capacityHint- the initial capacity of theArrayListused to accumulate items before sorting- Returns:
- the new
Singleinstance - Throws:
IllegalArgumentException- ifcapacityHintis non-positive- Since:
- 2.0
- See Also:
-
unsubscribeOn
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("custom") public final @NonNull Flowable<T> unsubscribeOn(@NonNull @NonNull Scheduler scheduler) Cancels the currentFlowableasynchronously by invokingFlow.Subscription.cancel()on the specifiedScheduler.The operator suppresses signals from the current
Flowableimmediately when the downstream cancels the flow because the actual cancellation itself could take an arbitrary amount of time to take effect and make the flow stop producing items.- Backpressure:
- The operator doesn't interfere with backpressure which is determined by the current
Flowable's backpressure behavior. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
scheduler- theSchedulerto perform cancellation actions on- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifschedulerisnull- See Also:
-
window
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Flowable<T>> window(long count) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each containingcountitems. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
Note that ignoring windows or subscribing later (i.e., on another thread) will result in so-called window abandonment where a window will only contain one element. The behavior is a trade-off between no-dataloss and ensuring upstream cancellation can happen.
- Backpressure:
- The operator honors backpressure of its inner and outer subscribers, however, the inner
Flowableuses an unbounded buffer that may hold at mostcountelements. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Parameters:
count- the maximum size of each window before it should be emitted- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Flowable<T>> window(long count, long skip) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits windows everyskipitems, each containing no more thancountitems. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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 between no-dataloss and ensuring upstream cancellation can happen under some race conditions.
- Backpressure:
- The operator honors backpressure of its inner and outer subscribers, however, the inner
Flowableuses an unbounded buffer that may hold at mostcountelements. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Parameters:
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 ifskipandcountare equal this is the same operation aswindow(long).- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcountorskipis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Flowable<Flowable<T>> window(long count, long skip, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits windows everyskipitems, each containing no more thancountitems. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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 between no-dataloss and ensuring upstream cancellation can happen under some race conditions.
- Backpressure:
- The operator honors backpressure of its inner and outer subscribers, however, the inner
Flowableuses an unbounded buffer that may hold at mostcountelements. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Parameters:
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 ifskipandcountare equal this is the same operation aswindow(long).bufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
IllegalArgumentException- ifcount,skiporbufferSizeis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowablestarts a new window periodically, as determined by thetimeskipargument. It emits each window after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure but have an unbounded inner buffer that may lead toOutOfMemoryErrorif left unconsumed. - Scheduler:
- This version of
windowoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanandtimeskiparguments- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowablestarts a new window periodically, as determined by thetimeskipargument. It emits each window after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The returned innerFlowables honor backpressure but have an unbounded inner buffer that may lead toOutOfMemoryErrorif left unconsumed. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanandtimeskipargumentsscheduler- theSchedulerto use when determining the end and start of a window- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
window
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<Flowable<T>> window(long timespan, long timeskip, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowablestarts a new window periodically, as determined by thetimeskipargument. It emits each window after a fixed timespan, specified by thetimespanargument. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The returned innerFlowables honor backpressure but have an unbounded inner buffer that may lead toOutOfMemoryErrorif left unconsumed. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanandtimeskipargumentsscheduler- theSchedulerto use when determining the end and start of a windowbufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- iftimespan,timeskiporbufferSizeis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration specified by thetimespanargument. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- This version of
windowoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanargument- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnull- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, long count) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration as specified by thetimespanargument or a maximum size as specified by thecountargument (whichever is reached first). When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- This version of
windowoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanargumentcount- the maximum size of each window before it should be emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("io.reactivex:computation") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, long count, boolean restart) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration as specified by thetimespanargument or a maximum size as specified by thecountargument (whichever is reached first). When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- This version of
windowoperates by default on thecomputationScheduler.
- Parameters:
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 thetimespanargumentcount- the maximum size of each window before it should be emittedrestart- iftrue, when a window reaches the capacity limit, the timer is restarted as well- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration as specified by thetimespanargument. When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure but have an unbounded inner buffer that may lead toOutOfMemoryErrorif left unconsumed. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a window- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnull- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, long count) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration specified by thetimespanargument or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a windowcount- the maximum size of each window before it should be emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("custom") @NonNull public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, long count, boolean restart) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration specified by thetimespanargument or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a windowcount- the maximum size of each window before it should be emittedrestart- iftrue, when a window reaches the capacity limit, the timer is restarted as well- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcountis non-positive- See Also:
-
window
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("custom") public final @NonNull Flowable<Flowable<T>> window(long timespan, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler, long count, boolean restart, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits connected, non-overlapping windows, each of a fixed duration specified by thetimespanargument or a maximum size specified by thecountargument (whichever is reached first). When the currentFlowablecompletes or encounters an error, the resultingFlowableemits the current window and propagates the notification from the currentFlowable.
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.
- Backpressure:
- The operator consumes the current
Flowablein an unbounded manner. The resultingFlowabledoesn't support backpressure as it uses time to control the creation of windows. The emitted innerFlowables honor backpressure and may hold up tocountelements at most. - Scheduler:
- You specify which
Schedulerthis operator will use.
- Parameters:
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 thetimespanargumentscheduler- theSchedulerto use when determining the end and start of a windowcount- the maximum size of each window before it should be emittedrestart- iftrue, when a window reaches the capacity limit, the timer is restarted as wellbufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifunitorschedulerisnullIllegalArgumentException- ifcount,timespanorbufferSizeis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull B> @NonNull Flowable<Flowable<T>> window(@NonNull @NonNull Flow.Publisher<@NonNull B> boundaryIndicator) Returns aFlowablethat emits non-overlapping windows of items it collects from the currentFlowablewhere the boundary of each window is determined by the items emitted from a specified boundary-governingFlow.Publisher.
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.
- Backpressure:
- The outer
Publisherof this operator does not support backpressure as it uses aboundaryPublisherto control data flow. The innerPublishers honor backpressure and buffer everything until the boundary signals the next element. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Type Parameters:
B- the window element type (ignored)- Parameters:
boundaryIndicator- aPublisherwhose emitted items close and open windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifboundaryIndicatorisnull- See Also:
-
window
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull B> @NonNull Flowable<Flowable<T>> window(@NonNull @NonNull Flow.Publisher<@NonNull B> boundaryIndicator, int bufferSize) Returns aFlowablethat emits non-overlapping windows of items it collects from the currentFlowablewhere the boundary of each window is determined by the items emitted from a specified boundary-governingFlow.Publisher.
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.
- Backpressure:
- The outer
Publisherof this operator does not support backpressure as it uses aboundaryPublisherto control data flow. The innerPublishers honor backpressure and buffer everything until the boundary signals the next element. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Type Parameters:
B- the window element type (ignored)- Parameters:
boundaryIndicator- aPublisherwhose emitted items close and open windowsbufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifboundaryIndicatorisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
window
@CheckReturnValue @BackpressureSupport(ERROR) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull V> @NonNull Flowable<Flowable<T>> window(@NonNull @NonNull Flow.Publisher<@NonNull U> openingIndicator, @NonNull @NonNull Function<? super @NonNull U, @NonNull ? extends Flow.Publisher<@NonNull V>> closingIndicator) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits windows that contain those items emitted by the currentFlowablebetween the time when thewindowOpeningsFlow.Publisheremits an item and when thePublisherreturned byclosingSelectoremits 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.
- Backpressure:
- The outer
Publisherof this operator doesn't support backpressure because the emission of new innerPublishers are controlled by thewindowOpeningsPublisher. The innerPublishers honor backpressure and buffer everything until the associated closingPublishersignals or completes. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of the window-openingPublisherV- the element type of the window-closingPublishers- Parameters:
openingIndicator- aPublisherthat, when it emits an item, causes another window to be createdclosingIndicator- aFunctionthat produces aPublisherfor every window created. When thisPublisheremits an item, the associated window is closed and emitted- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifopeningIndicatororclosingIndicatorisnull- See Also:
-
window
@CheckReturnValue @NonNull @BackpressureSupport(ERROR) @SchedulerSupport("none") public final <@NonNull U, @NonNull V> @NonNull Flowable<Flowable<T>> window(@NonNull @NonNull Flow.Publisher<@NonNull U> openingIndicator, @NonNull @NonNull Function<? super @NonNull U, @NonNull ? extends Flow.Publisher<@NonNull V>> closingIndicator, int bufferSize) Returns aFlowablethat emits windows of items it collects from the currentFlowable. The resultingFlowableemits windows that contain those items emitted by the currentFlowablebetween the time when thewindowOpeningsFlow.Publisheremits an item and when thePublisherreturned byclosingSelectoremits 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.
- Backpressure:
- The outer
Publisherof this operator doesn't support backpressure because the emission of new innerPublishers are controlled by thewindowOpeningsPublisher. The innerPublishers honor backpressure and buffer everything until the associated closingPublishersignals or completes. - Scheduler:
- This version of
windowdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the element type of the window-openingPublisherV- the element type of the window-closingPublishers- Parameters:
openingIndicator- aPublisherthat, when it emits an item, causes another window to be createdclosingIndicator- aFunctionthat produces aPublisherfor every window created. When thisPublisheremits an item, the associated window is closed and emittedbufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifopeningIndicatororclosingIndicatorisnullIllegalArgumentException- ifbufferSizeis non-positive- See Also:
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull U, @NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> combiner) Merges the specifiedFlow.Publisherinto the currentFlowablesequence by using theresultSelectorfunction only when the currentFlowable(this instance) 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
Flowableemits (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.
- Backpressure:
- The operator is a pass-through for backpressure: the backpressure support
depends on the upstream and downstream's backpressure behavior. The other
Publisheris consumed in an unbounded fashion. - Scheduler:
- This operator, by default, doesn't run any particular
Scheduler.
- Type Parameters:
U- the element type of the otherPublisherR- the result type of the combination- Parameters:
other- the otherPublishercombiner- the function to call when the currentFlowableemits an item and the otherPublisherhas already emitted an item, to generate the item to be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherorcombinerisnull- Since:
- 2.0
- See Also:
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull T1, @NonNull T2, @NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Flow.Publisher<@NonNull T1> source1, @NonNull @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull @NonNull Function3<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers 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
Flowableemits (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.- Backpressure:
- This operator is a pass-through for backpressure behavior between the current
Flowableand the downstreamFlow.Subscriber. The otherPublishers are consumed in an unbounded manner. - Scheduler:
- This operator does not operate by default on a particular
Scheduler.
- Type Parameters:
T1- the first other source's value typeT2- the second other source's value typeR- the result value type- Parameters:
source1- the first otherPublishersource2- the second otherPublishercombiner- the function called with an array of values from each participatingPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2orcombinerisnull- Since:
- 2.0
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Flow.Publisher<@NonNull T1> source1, @NonNull @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull @NonNull Flow.Publisher<@NonNull T3> source3, @NonNull @NonNull Function4<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers 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
Flowableemits (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.- Backpressure:
- This operator is a pass-through for backpressure behavior between the current
Flowableand the downstreamFlow.Subscriber. The otherPublishers are consumed in an unbounded manner. - Scheduler:
- This operator does not operate by default on a particular
Scheduler.
- Type Parameters:
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 type- Parameters:
source1- the first otherPublishersource2- the second otherPublishersource3- the third otherPublishercombiner- the function called with an array of values from each participatingPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3orcombinerisnull- Since:
- 2.0
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Flow.Publisher<@NonNull T1> source1, @NonNull @NonNull Flow.Publisher<@NonNull T2> source2, @NonNull @NonNull Flow.Publisher<@NonNull T3> source3, @NonNull @NonNull Flow.Publisher<@NonNull T4> source4, @NonNull @NonNull Function5<? super @NonNull T, ? super @NonNull T1, ? super @NonNull T2, ? super @NonNull T3, ? super @NonNull T4, @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers 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
Flowableemits (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.- Backpressure:
- This operator is a pass-through for backpressure behavior between the current
Flowableand the downstreamFlow.Subscriber. The otherPublishers are consumed in an unbounded manner. - Scheduler:
- This operator does not operate by default on a particular
Scheduler.
- Type Parameters:
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 type- Parameters:
source1- the first otherPublishersource2- the second otherPublishersource3- the third otherPublishersource4- the fourth otherPublishercombiner- the function called with an array of values from each participatingPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifsource1,source2,source3,source4orcombinerisnull- Since:
- 2.0
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Flow.Publisher<@NonNull ?>[] others, @NonNull @NonNull Function<? super Object[], @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers 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
Flowableemits (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.- Backpressure:
- This operator is a pass-through for backpressure behavior between the current
Flowableand the downstreamFlow.Subscriber. The otherPublishers are consumed in an unbounded manner. - Scheduler:
- This operator does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the result value type- Parameters:
others- the array of other sourcescombiner- the function called with an array of values from each participatingPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifothersorcombinerisnull- Since:
- 2.0
-
withLatestFrom
@CheckReturnValue @NonNull @BackpressureSupport(PASS_THROUGH) @SchedulerSupport("none") public final <@NonNull R> @NonNull Flowable<R> withLatestFrom(@NonNull @NonNull Iterable<@NonNull ? extends Flow.Publisher<@NonNull ?>> others, @NonNull @NonNull Function<? super Object[], @NonNull R> combiner) Combines the value emission from the currentFlowablewith the latest emissions from the otherFlow.Publishers 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
Flowableemits (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.- Backpressure:
- This operator is a pass-through for backpressure behavior between the current
Flowableand the downstreamFlow.Subscriber. The otherPublishers are consumed in an unbounded manner. - Scheduler:
- This operator does not operate by default on a particular
Scheduler.
- Type Parameters:
R- the result value type- Parameters:
others- the iterable of other sourcescombiner- the function called with an array of values from each participatingPublisher- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifothersorcombinerisnull- Since:
- 2.0
-
zipWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull R> @NonNull Flowable<R> zipWith(@NonNull @NonNull Iterable<@NonNull U> other, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand a specifiedIterablesequence.
Note that the
otherIterableis evaluated as items are observed from the currentFlowable; it is not pre-consumed. This allows you to zip infinite streams on either side.- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipWithdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items in theotherIterableR- the type of items emitted by the resultingFlowable- Parameters:
other- theIterablesequencezipper- a function that combines the pairs of items from the currentFlowableand theIterableto generate the items to be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherorzipperisnull- See Also:
-
zipWith
@CheckReturnValue @NonNull @BackpressureSupport(FULL) @SchedulerSupport("none") public final <@NonNull U, @NonNull R> @NonNull Flowable<R> zipWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipWithdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by theotherPublisherR- the type of items emitted by the resultingFlowable- Parameters:
other- the otherPublisherzipper- a function that combines the pairs of items from the twoPublishers to generate the items to be emitted by the resultingFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherorzipperisnull- See Also:
-
zipWith
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> zipWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper, boolean delayError) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipWithdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by theotherPublisherR- the type of items emitted by the resultingFlowable- Parameters:
other- the otherPublisherzipper- a function that combines the pairs of items from the twoPublishers to generate the items to be emitted by the resultingFlowabledelayError- iftrue, errors from the currentFlowableor the otherPublisheris delayed until both terminate- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherorzipperisnull- Since:
- 2.0
- See Also:
-
zipWith
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull U, @NonNull R> @NonNull Flowable<R> zipWith(@NonNull @NonNull Flow.Publisher<? extends @NonNull U> other, @NonNull @NonNull BiFunction<? super @NonNull T, ? super @NonNull U, ? extends @NonNull R> zipper, boolean delayError, int bufferSize) Returns aFlowablethat emits items that are the result of applying a specified function to pairs of values, one each from the currentFlowableand another specifiedFlow.Publisher.The operator subscribes to its sources in the order they are specified and completes eagerly if one of the sources is shorter than the rest while canceling 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 cancel B immediately. For example:range(1, 5).doOnComplete(action1).zipWith(range(6, 5).doOnComplete(action2), (a, b) -> a + b)action1will be called butaction2won't.
To work around this termination property, usedoOnCancel(Action)as well or useusing()to do cleanup in case of completion or cancellation.
- Backpressure:
- The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with
interval(long, TimeUnit)may result inMissingBackpressureException, use one of theonBackpressureXto handle similar, backpressure-ignoring sources. - Scheduler:
zipWithdoes not operate by default on a particularScheduler.
- Type Parameters:
U- the type of items emitted by theotherPublisherR- the type of items emitted by the resultingFlowable- Parameters:
other- the otherPublisherzipper- a function that combines the pairs of items from the twoPublishers to generate the items to be emitted by the resultingFlowabledelayError- iftrue, errors from the currentFlowableor the otherPublisheris delayed until both terminatebufferSize- the capacity hint for the buffer in the inner windows- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifotherorzipperisnullIllegalArgumentException- ifbufferSizeis non-positive- Since:
- 2.0
- See Also:
-
test
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull TestSubscriber<T> test()Creates aTestSubscriberthat requestsLong.MAX_VALUEand subscribes it to thisFlowable.- Backpressure:
- The returned
TestSubscriberconsumes thisFlowablein an unbounded fashion. - Scheduler:
testdoes not operate by default on a particularScheduler.
- Returns:
- the new
TestSubscriberinstance - Since:
- 2.0
-
test
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull TestSubscriber<T> test(long initialRequest) Creates aTestSubscriberwith the given initial request amount and subscribes it to thisFlowable.- Backpressure:
- The returned
TestSubscriberrequests the giveninitialRequestamount upfront. - Scheduler:
testdoes not operate by default on a particularScheduler.
- Parameters:
initialRequest- the initial request amount, positive- Returns:
- the new
TestSubscriberinstance - Since:
- 2.0
-
test
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull TestSubscriber<T> test(long initialRequest, boolean cancel) Creates aTestSubscriberwith the given initial request amount, optionally cancels it before the subscription and subscribes it to thisFlowable.- Backpressure:
- The returned
TestSubscriberrequests the giveninitialRequestamount upfront. - Scheduler:
testdoes not operate by default on a particularScheduler.
- Parameters:
initialRequest- the initial request amount, positivecancel- should theTestSubscriberbe canceled before the subscription?- Returns:
- the new
TestSubscriberinstance - Since:
- 2.0
-
fromOptional
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<@NonNull T> fromOptional(@NonNull @NonNull Optional<@NonNull T> optional) Converts the existing value of the provided optional into ajust(Object)or an empty optional into anempty()Flowableinstance.
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)aroundfromOptional:Flowable.defer(() -> Flowable.fromOptional(createOptional()));- Backpressure:
- The returned
Flowablesupports backpressure. - Scheduler:
fromOptionaldoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of the optional value- Parameters:
optional- the optional value to convert into aFlowable- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifoptionalisnull- Since:
- 3.0.0
- See Also:
-
fromCompletionStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<@NonNull T> fromCompletionStage(@NonNull @NonNull CompletionStage<@NonNull T> stage) Signals the completion value or error of the given (hot)CompletionStage-based asynchronous calculation.
Note that the operator takes an already instantiated, running or terminated
CompletionStage. If theCompletionStageis to be created per consumer upon subscription, usedefer(Supplier)aroundfromCompletionStage:Flowable.defer(() -> Flowable.fromCompletionStage(createCompletionStage()));If the
CompletionStagecompletes withnull, aNullPointerExceptionis signaled.Canceling the flow can't cancel the execution of the
CompletionStagebecauseCompletionStageitself doesn't support cancellation. Instead, the operator detaches from theCompletionStage.- Backpressure:
- The returned
Flowablesupports backpressure and caches the completion value until the downstream is ready to receive it. - Scheduler:
fromCompletionStagedoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of theCompletionStage- Parameters:
stage- theCompletionStageto convert toFlowableand signal its terminal value or error- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifstageisnull- Since:
- 3.0.0
-
fromStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public static <@NonNull T> @NonNull Flowable<@NonNull T> fromStream(@NonNull @NonNull Stream<@NonNull T> stream) Converts aStreaminto a finiteFlowableand emits its items in the sequence.
The operator closes the
Streamupon cancellation and when it terminates. Any exceptions raised when closing aStreamare routed to the global error handler (RxJavaPlugins.onError(Throwable). If aStreamshould not be closed, turn it into anIterableand usefromIterable(Iterable):Stream<T> stream = ... Flowable.fromIterable(stream::iterator);Note that
Streams can be consumed only once; any subsequent attempt to consume aStreamwill result in anIllegalStateException.Primitive streams are not supported and items have to be boxed manually (e.g., via
IntStream.boxed()):IntStream intStream = IntStream.rangeClosed(1, 10); Flowable.fromStream(intStream.boxed());Streamdoes not support concurrent usage so creating and/or consuming the same instance multiple times from multiple threads can lead to undefined behavior.- Backpressure:
- The operator honors backpressure from downstream and iterates the given
Streamon demand (i.e., when requested). - Scheduler:
fromStreamdoes not operate by default on a particularScheduler.
- Type Parameters:
T- the element type of the sourceStream- Parameters:
stream- theStreamof values to emit- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifstreamisnull- Since:
- 3.0.0
- See Also:
-
mapOptional
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> mapOptional(@NonNull @NonNull Function<? super @NonNull T, @NonNull Optional<? extends @NonNull R>> mapper) Maps each upstream value into anOptionaland emits the contained item if not empty.
- Backpressure:
- The operator is a pass-through for downstream requests but issues
request(1)whenever the mappedOptionalis empty. - Scheduler:
mapOptionaldoes not operate by default on a particularScheduler.
- Type Parameters:
R- the non-nulloutput type- Parameters:
mapper- the function that receives the upstream item and should return a non-emptyOptionalto emit as the output or an emptyOptionalto skip to the next upstream value- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 3.0.0
- See Also:
-
collect
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final <@NonNull R, @Nullable A> @NonNull Single<R> collect(@NonNull @NonNull Collector<? super @NonNull T, @Nullable A, @NonNull R> collector) Collects the finite upstream's values into a container via aStreamCollectorcallback set and emits it as the success result.
- Backpressure:
- The operator consumes the upstream in an unbounded manner.
- Scheduler:
collectdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the non-nullresult typeA- the intermediate container type used for the accumulation- Parameters:
collector- the interface defining the container supplier, accumulator and finisher functions; seeCollectorsfor some standard implementations- Returns:
- the new
Singleinstance - Throws:
NullPointerException- ifcollectorisnull- Since:
- 3.0.0
- See Also:
-
firstStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> firstStage(@Nullable @NonNull T defaultItem) Signals the first upstream item (or the default item if the upstream is empty) via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).CompletionStages don't have a notion of emptiness and allownulls, therefore, one can either use adefaultItemofnullor turn the flow into a sequence ofOptionals and default toOptional.empty():CompletionStage<Optional<T>> stage = source.map(Optional::of).firstStage(Optional.empty());- Backpressure:
- The operator requests one item from upstream and then when received, cancels the upstream.
- Scheduler:
firstStagedoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the item to signal if the upstream is empty- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
singleStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> singleStage(@Nullable @NonNull T defaultItem) Signals the only expected upstream item (or the default item if the upstream is empty) or signalsIllegalArgumentExceptionif the upstream has more than one item via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).CompletionStages don't have a notion of emptiness and allownulls, therefore, one can either use adefaultItemofnullor turn the flow into a sequence ofOptionals and default toOptional.empty():CompletionStage<Optional<T>> stage = source.map(Optional::of).singleStage(Optional.empty());- Backpressure:
- The operator requests two items from upstream and then when more than one item is received, cancels the upstream.
- Scheduler:
singleStagedoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the item to signal if the upstream is empty- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
lastStage
@CheckReturnValue @BackpressureSupport(UNBOUNDED_IN) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> lastStage(@Nullable @NonNull T defaultItem) Signals the last upstream item (or the default item if the upstream is empty) via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).CompletionStages don't have a notion of emptiness and allownulls, therefore, one can either use adefaultItemofnullor turn the flow into a sequence ofOptionals and default toOptional.empty():CompletionStage<Optional<T>> stage = source.map(Optional::of).lastStage(Optional.empty());- Backpressure:
- The operator requests an unbounded number of items from the upstream.
- Scheduler:
lastStagedoes not operate by default on a particularScheduler.
- Parameters:
defaultItem- the item to signal if the upstream is empty- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
firstOrErrorStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> firstOrErrorStage()Signals the first upstream item or aNoSuchElementExceptionif the upstream is empty via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).- Backpressure:
- The operator requests one item from upstream and then when received, cancels the upstream.
- Scheduler:
firstOrErrorStagedoes not operate by default on a particularScheduler.
- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
singleOrErrorStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> singleOrErrorStage()Signals the only expected upstream item, aNoSuchElementExceptionif the upstream is empty or signalsIllegalArgumentExceptionif the upstream has more than one item via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).- Backpressure:
- The operator requests two items from upstream and then when more than one item is received, cancels the upstream.
- Scheduler:
singleOrErrorStagedoes not operate by default on a particularScheduler.
- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
lastOrErrorStage
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull CompletionStage<T> lastOrErrorStage()Signals the last upstream item or aNoSuchElementExceptionif the upstream is empty via aCompletionStage.
The upstream can be canceled by converting the resulting
CompletionStageintoCompletableFutureviaCompletionStage.toCompletableFuture()and callingCompletableFuture.cancel(boolean)on it. The upstream will be also cancelled if the resultingCompletionStageis converted to and completed manually byCompletableFuture.complete(Object)orCompletableFuture.completeExceptionally(Throwable).- Backpressure:
- The operator requests an unbounded number of items from the upstream.
- Scheduler:
lastOrErrorStagedoes not operate by default on a particularScheduler.
- Returns:
- the new
CompletionStageinstance - Since:
- 3.0.0
- See Also:
-
blockingStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Stream<T> blockingStream()Creates a sequentialStreamto consume or process thisFlowablein a blocking manner via the JavaStreamAPI.
Cancellation of the upstream is done via
BaseStream.close(), therefore, it is strongly recommended the consumption is performed within a try-with-resources construct:Flowable<Integer> source = Flowable.range(1, 10) .subscribeOn(Schedulers.computation()); try (Stream<Integer> stream = source.blockingStream()) { stream.limit(3).forEach(System.out::println); }- Backpressure:
- The operator requests
bufferSize()amount upfront and 75% of it after each 75% of the amount received. - Scheduler:
blockingStreamdoes not operate by default on a particularScheduler.
- Returns:
- the new
Streaminstance - Since:
- 3.0.0
- See Also:
-
blockingStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final @NonNull Stream<T> blockingStream(int prefetch) Creates a sequentialStreamto consume or process thisFlowablein a blocking manner via the JavaStreamAPI.
Cancellation of the upstream is done via
BaseStream.close(), therefore, it is strongly recommended the consumption is performed within a try-with-resources construct:Flowable<Integer> source = Flowable.range(1, 10) .subscribeOn(Schedulers.computation()); try (Stream<Integer> stream = source.blockingStream(4)) { stream.limit(3).forEach(System.out::println); }- Backpressure:
- The operator requests the given
prefetchamount upfront and 75% of it after each 75% of the amount received. - Scheduler:
blockingStreamdoes not operate by default on a particularScheduler.
- Parameters:
prefetch- the number of items to request from the upstream to limit the number of in-flight items and item generation.- Returns:
- the new
Streaminstance - Throws:
IllegalArgumentException- ifprefetchis non-positive- Since:
- 3.0.0
-
concatMapStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapStream(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java
Streams, the streams are mapped and consumed in a sequential fashion without interleaving (unlike a more generalflatMap(Function)). Therefore,flatMapStreamandconcatMapStreamare identical operators and are provided as aliases.The operator closes the
Streamupon cancellation and when it terminates. Any exceptions raised when closing aStreamare routed to the global error handler (RxJavaPlugins.onError(Throwable). If aStreamshould not be closed, turn it into anIterableand useconcatMapIterable(Function):source.concatMapIterable(v -> createStream(v)::iterator);Note that
Streams can be consumed only once; any subsequent attempt to consume aStreamwill result in anIllegalStateException.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());Streamdoes not support concurrent usage so creating and/or consuming the same instance multiple times from multiple threads can lead to undefined behavior.- Backpressure:
- The operator honors the downstream backpressure and consumes the inner stream only on demand. The operator
prefetches
bufferSize()items of the upstream (then 75% of it after the 75% received) and caches them until they are ready to be mapped intoStreams after the currentStreamhas been consumed. - Scheduler:
concatMapStreamdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of theStreams and the result- Parameters:
mapper- the function that receives an upstream item and should return aStreamwhose elements will be emitted to the downstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 3.0.0
- See Also:
-
concatMapStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> concatMapStream(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper, int prefetch) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java
Streams, the streams are mapped and consumed in a sequential fashion without interleaving (unlike a more generalflatMap(Function)). Therefore,flatMapStreamandconcatMapStreamare identical operators and are provided as aliases.The operator closes the
Streamupon cancellation and when it terminates. Any exceptions raised when closing aStreamare routed to the global error handler (RxJavaPlugins.onError(Throwable). If aStreamshould not be closed, turn it into anIterableand useconcatMapIterable(Function, int):source.concatMapIterable(v -> createStream(v)::iterator, 32);Note that
Streams can be consumed only once; any subsequent attempt to consume aStreamwill result in anIllegalStateException.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(), 32);Streamdoes not support concurrent usage so creating and/or consuming the same instance multiple times from multiple threads can lead to undefined behavior.- Backpressure:
- The operator honors the downstream backpressure and consumes the inner stream only on demand. The operator
prefetches the given amount of upstream items and caches them until they are ready to be mapped into
Streams after the currentStreamhas been consumed. - Scheduler:
concatMapStreamdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of theStreams and the result- Parameters:
mapper- the function that receives an upstream item and should return aStreamwhose elements will be emitted to the downstreamprefetch- the number of upstream items to request upfront, then 75% of this amount after each 75% upstream items received- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 3.0.0
- See Also:
-
flatMapStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMapStream(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java
Streams, the streams are mapped and consumed in a sequential fashion without interleaving (unlike a more generalflatMap(Function)). Therefore,flatMapStreamandconcatMapStreamare identical operators and are provided as aliases.The operator closes the
Streamupon cancellation and when it terminates. Any exceptions raised when closing aStreamare routed to the global error handler (RxJavaPlugins.onError(Throwable). If aStreamshould not be closed, turn it into anIterableand useflatMapIterable(Function):source.flatMapIterable(v -> createStream(v)::iterator);Note that
Streams can be consumed only once; any subsequent attempt to consume aStreamwill result in anIllegalStateException.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());Streamdoes not support concurrent usage so creating and/or consuming the same instance multiple times from multiple threads can lead to undefined behavior.- Backpressure:
- The operator honors the downstream backpressure and consumes the inner stream only on demand. The operator
prefetches
bufferSize()items of the upstream (then 75% of it after the 75% received) and caches them until they are ready to be mapped intoStreams after the currentStreamhas been consumed. - Scheduler:
flatMapStreamdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of theStreams and the result- Parameters:
mapper- the function that receives an upstream item and should return aStreamwhose elements will be emitted to the downstream- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnull- Since:
- 3.0.0
- See Also:
-
flatMapStream
@CheckReturnValue @BackpressureSupport(FULL) @SchedulerSupport("none") @NonNull public final <@NonNull R> @NonNull Flowable<R> flatMapStream(@NonNull @NonNull Function<? super @NonNull T, @NonNull ? extends Stream<? extends @NonNull R>> mapper, int prefetch) Maps each upstream item into aStreamand emits theStream's items to the downstream in a sequential fashion.
Due to the blocking and sequential nature of Java
Streams, the streams are mapped and consumed in a sequential fashion without interleaving (unlike a more generalflatMap(Function)). Therefore,flatMapStreamandconcatMapStreamare identical operators and are provided as aliases.The operator closes the
Streamupon cancellation and when it terminates. Any exceptions raised when closing aStreamare routed to the global error handler (RxJavaPlugins.onError(Throwable). If aStreamshould not be closed, turn it into anIterableand useflatMapIterable(Function, int):source.flatMapIterable(v -> createStream(v)::iterator, 32);Note that
Streams can be consumed only once; any subsequent attempt to consume aStreamwill result in anIllegalStateException.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(), 32);Streamdoes not support concurrent usage so creating and/or consuming the same instance multiple times from multiple threads can lead to undefined behavior.- Backpressure:
- The operator honors the downstream backpressure and consumes the inner stream only on demand. The operator
prefetches the given amount of upstream items and caches them until they are ready to be mapped into
Streams after the currentStreamhas been consumed. - Scheduler:
flatMapStreamdoes not operate by default on a particularScheduler.
- Type Parameters:
R- the element type of theStreams and the result- Parameters:
mapper- the function that receives an upstream item and should return aStreamwhose elements will be emitted to the downstreamprefetch- the number of upstream items to request upfront, then 75% of this amount after each 75% upstream items received- Returns:
- the new
Flowableinstance - Throws:
NullPointerException- ifmapperisnullIllegalArgumentException- ifprefetchis non-positive- Since:
- 3.0.0
- See Also:
-