Reactor 3中是否存在合并flatMap与flatMapIterable的工具函数?
Reactor 3 简化Mono<List>转Flux的操作
你可以用flatMapMany操作符直接合并这两步逻辑,不需要修改myProcessor的返回类型。
flatMapMany的作用是将上游序列的每个元素转换为一个Publisher(比如Flux),并将所有转换后的序列元素合并为最终的Flux。正好可以把调用myProcessor.doIt()得到Mono<List<B>>,再拆分为Flux<B>的逻辑整合到一个操作里:
public Flux<B> processFragment(Mono<A> input) { return input.flatMapMany(a -> myProcessor.doIt(a).flatMapIterable(data -> data)); }
如果觉得data -> data还是有点冗余,可以用Function.identity()代替,写法更简洁:
import java.util.function.Function; public Flux<B> processFragment(Mono<A> input) { return input.flatMapMany(a -> myProcessor.doIt(a).flatMapIterable(Function.identity())); }
这种写法和你原来的逻辑完全等价,只是把flatMap+flatMapIterable的两步操作合并到了flatMapMany中,代码更紧凑。
内容的提问来源于stack exchange,提问作者floxcc
相关产品推荐
相关产品推荐

