Spring Reactor List<Mono<Int>> 序列到 Mono<List<Int>>
Spring Reactor List<Mono<Int>> sequence to Mono<List<Int>>
objective 是排序一个 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)
}
val listOfMono: Mono<List<Mono<Int>>> = foo(10).flatMap {
Flux.fromIterable(doubleUp(it))
.collectList()
}
您没有办法跳过 Flux
,但无论如何它都是内部内容。
objective 是排序一个 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)
}
val listOfMono: Mono<List<Mono<Int>>> = foo(10).flatMap {
Flux.fromIterable(doubleUp(it))
.collectList()
}
您没有办法跳过 Flux
,但无论如何它都是内部内容。