reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <V> Flux<V> compose(Function<? super Flux<T>, ? extends Publisher<V>> transformer) {
		return defer(() -> transformer.apply(this));
	}
public final <V> Flux<V> compose(Function<? super Flux<T>, ? extends Publisher<V>> transformer) {
		return defer(() -> transformer.apply(this));
	}
public final < V > Flux < V > compose ( Function < ? super Flux < T > , ? extends Publisher < V > > transformer ) { return defer ( ( ) -> transformer . apply ( this ) ) ; }
Defer the transformation of this {@link Flux} in order to generate a target {@link Flux} type.
A transformation will occur for each {@link Subscriber}. For instance:
<blockquote><pre>
flux.compose(original -> original.log());
</pre></blockquote>
<p>
<img class="marble" src="doc-files/marbles/composeForFlux.svg" alt="">

@param transformer the {@link Function} to lazily map this {@link Flux} into a target {@link Publisher}
instance for each new subscriber
@param <V> the item type in the returned {@link Publisher}

@return a new {@link Flux}
@see #transform  transform() for immmediate transformation of {@link Flux}
@see #as as() for a loose conversion to an arbitrary type
Defer the transformation of this { @link Flux } in order to generate a target { @link Flux } type . A transformation will occur for each { @link Subscriber } . For instance : <blockquote > <pre > flux . compose ( original - > original . log () ) ; < / pre > < / blockquote > <p > <img class = marble src = doc - files / marbles / composeForFlux . svg alt = >