Spring Reactor List <mono <int >>序列到Mono <list <int >>

时间:2019-02-19 05:03:46

标签: spring reactor

目标是对List<Mono<Int>>Mono<List<Int>>进行排序。 flatMap的主体使用Kotlin代码段中的Mono.block()进行了此操作。如果我想保留Mono<List<Int>>而不是Flux<Int>,有没有比这更好的方法了?谢谢

    fun foo(i: Int): Mono<Int> = Mono.just(i)

    fun doubleUp(i: Int): List<Mono<Int>> {
        return listOf(Mono.just(i * 2), Mono.just((i + 1) * 2), Mono.just((i + 2) * 2))
    }

    val listOfMono: Mono<ArrayList<Int>> = foo(10).flatMap {
        val xs = doubleUp(it)
        val ys = ArrayList<Int>()
        xs.forEach{ys.add(it.block())}  // Mono.block()
        Mono.just(ys)
    }

1 个答案:

答案 0 :(得分:0)

val listOfMono: Mono<List<Mono<Int>>> = foo(10).flatMap {
    Flux.fromIterable(doubleUp(it))
            .collectList()
}

您没有跳过Flux的方法,但这仍然是内部的东西。