Может кто-нибудь объяснить мне, как передать сигнал onComplete через оператор flatMap в RxJava?
Если прокомментировать оператор flatMap, я могу получить список чисел от 1 до 10, это означает, что toList будет получать сигнал onComplete.Но когда я хочу обработать данные дальше в flatMap, они будут использовать сигнал onComplete, и я не смогу получить никакого результата.Что я могу сделать, чтобы передать сигнал onComplete через оператора flatMap?
У меня есть следующая простая программа:
fun main(args: Array<String>) {
notify()
.flatMapMaybe { processData(it) }
.toList()
.subscribe(
{ println("onNext: $it") },
{ println("onError: ${it.message}") }
)
}
fun notify(): Flowable<Int> {
return Flowable.create({ emitter ->
val random = Random()
for (index in 1..10) {
emitter.onNext(index)
Thread.sleep((random.nextInt(500)).toLong())
}
emitter.onComplete()
}, BackpressureStrategy.BUFFER)
}
fun processData(data: Int): Maybe<String> {
return Maybe.fromCallable { data }
.flatMap {
if (it.mod(2) == 0) {
Maybe.fromCallable { it.toString() }
} else {
Maybe.never()
}
}
}