src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, R> Flowable<R> zipWith(Iterable<U> other,  BiFunction<? super T, ? super U, ? extends R> zipper) {
        ObjectHelper.requireNonNull(other, "other is null");
        ObjectHelper.requireNonNull(zipper, "zipper is null");
        return RxJavaPlugins.onAssembly(new FlowableZipIterable<T, U, R>(this, other, zipper));
    }
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, R> Flowable<R> zipWith(Iterable<U> other,  BiFunction<? super T, ? super U, ? extends R> zipper) {
        ObjectHelper.requireNonNull(other, "other is null");
        ObjectHelper.requireNonNull(zipper, "zipper is null");
        return RxJavaPlugins.onAssembly(new FlowableZipIterable<T, U, R>(this, other, zipper));
    }
@ CheckReturnValue @ NonNull @ BackpressureSupport ( BackpressureKind . FULL ) @ SchedulerSupport ( SchedulerSupport . NONE ) public final < U , R > Flowable < R > zipWith ( Iterable < U > other , BiFunction < ? super T , ? super U , ? extends R > zipper ) { ObjectHelper . requireNonNull ( other , "other is null" ) ; ObjectHelper . requireNonNull ( zipper , "zipper is null" ) ; return RxJavaPlugins . onAssembly ( new FlowableZipIterable < T , U , R > ( this , other , zipper ) ) ; }
Returns a Flowable that emits items that are the result of applying a specified function to pairs of
values, one each from the source Publisher and a specified Iterable sequence.
<p>
<img width="640" height="380" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/zip.i.png" alt="">
<p>
Note that the {@code other} Iterable is evaluated as items are observed from the source Publisher; it is
not pre-consumed. This allows you to zip infinite streams on either side.
<dl>
<dt><b>Backpressure:</b></dt>
<dd>The operator expects backpressure from the sources and honors backpressure from the downstream.
(I.e., zipping with {@link #interval(long, TimeUnit)} may result in MissingBackpressureException, use
one of the {@code onBackpressureX} to handle similar, backpressure-ignoring sources.</dd>
<dt><b>Scheduler:</b></dt>
<dd>{@code zipWith} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param <U>
the type of items in the {@code other} Iterable
@param <R>
the type of items emitted by the resulting Publisher
@param other
the Iterable sequence
@param zipper
a function that combines the pairs of items from the Publisher and the Iterable to generate
the items to be emitted by the resulting Publisher
@return a Flowable that pairs up values from the source Publisher and the {@code other} Iterable
sequence and emits the results of {@code zipFunction} applied to these pairs
@see <a href="http://reactivex.io/documentation/operators/zip.html">ReactiveX operators documentation: Zip</a>
Returns a Flowable that emits items that are the result of applying a specified function to pairs of values one each from the source Publisher and a specified Iterable sequence . <p > <img width = 640 height = 380 src = https : // raw . github . com / wiki / ReactiveX / RxJava / images / rx - operators / zip . i . png alt = > <p > Note that the { @code other } Iterable is evaluated as items are observed from the source Publisher ; it is not pre - consumed . This allows you to zip infinite streams on either side . <dl > <dt > <b > Backpressure : < / b > < / dt > <dd > The operator expects backpressure from the sources and honors backpressure from the downstream . ( I . e . zipping with { @link #interval ( long TimeUnit ) } may result in MissingBackpressureException use one of the { @code onBackpressureX } to handle similar backpressure - ignoring sources . < / dd > <dt > <b > Scheduler : < / b > < / dt > <dd > { @code zipWith } does not operate by default on a particular { @link Scheduler } . < / dd > < / dl >