java 如何将Flux〈List>扁平< T>化为Flux< T>?

rkue9o1l  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(355)

我的代码看起来像这样:

fun mapBatch(batch: List<String>): Mono<List<MyClass>> ...

fun myFun(stream: Flux<String>): Flux<MyClass> {
    return stream
            .bufferTimeout(50, Duration.ofSeconds(60L))
            .flatMap{ batch -> mapBatch(batch) }
            /// now here I would like to get Flux<MyClass> but have Flux<List<MyClass>> 
}

如何从Flux<List<T>>获取Flux<T>

qltillow

qltillow1#

您应该使用.concatMapIterable.flatMapIterable
Flux#flatMapIterable是一个特殊的运算符,用于将表示为Iterable的项“扁平化”为T的React流。

0sgqnhkj

0sgqnhkj2#

可以使用flatMap(Flux::fromIterable)将其展平:

fun mapBatch(batch: List<String>): Mono<List<MyClass>> ...

fun myFun(stream: Flux<String>): Flux<MyClass> {
    return stream
            .bufferTimeout(50, Duration.ofSeconds(60L))
            .flatMap{ batch -> mapBatch(batch) }
            .flatMap(Flux::fromIterable) 
}

相关问题