Список весенних реакторовпоследовательность в моно - PullRequest
0 голосов
/ 19 февраля 2019

Целью является последовательность от List<Mono<Int>> до Mono<List<Int>>.Тело flatMap делает это, используя Mono.block() во фрагменте кода Kotlin.Есть ли намного лучший способ, чем этот, если я хочу оставить 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 голосов
/ 19 февраля 2019
val listOfMono: Mono<List<Mono<Int>>> = foo(10).flatMap {
    Flux.fromIterable(doubleUp(it))
            .collectList()
}

У вас нет возможности пропустить Flux, но это все равно внутреннее.

...