Kotlin генерирует последовательность в потоке реактора

#kotlin #project-reactor

#kotlin #проект-реактор

Вопрос:

Используя последовательности Kotlin, мы можем сделать что-то вроде этого.

 val seq = generateSequence(0) { it   1 }
seq.take(4).subscripe() { println(it) }
  

Это вычислит новую последовательность, содержащую четыре значения, начиная с начального значения.

Я ищу способ добиться того же, используя поток реактора. Вычисление последовательности на основе начального значения. Но я только что нашел что-то для создания статической последовательности val f = Flux.just(0, 1, 2, ...)

Ответ №1:

Вы можете использовать reactor-kotlin-extensions library для преобразования последовательности Kotlin в a Flux так же просто, как:

 import reactor.kotlin.core.publisher.toFlux

// ...

generateSequence(0) { it   1 }.toFlux().take(4).subscribe { println(it) }
  

Если вы хотите то же самое, используя только реактор:

 Flux.generate<Int, Int>({0}, { curr, sink -> sink.next(curr); curr   1 })
    .take(4)
    .subscribe { println(it)}