Kotlin 带toList的RxJava平面图

Kotlin 带toList的RxJava平面图,kotlin,rx-java2,Kotlin,Rx Java2,有人能解释一下在RxJava中如何通过flatMap操作符传递onComplete信号吗 如果对flatMap运算符进行注释,我可以得到从1到10的数字列表,这意味着toList将接收到onComplete信号。但当我想在flatMap中进一步处理数据时,它会消耗一个完整的信号,我无法得到任何结果。如何通过flatMap操作符传递onComplete信号 我有以下简单的程序: fun main(args: Array<String>) { notify()

有人能解释一下在RxJava中如何通过flatMap操作符传递onComplete信号吗

如果对flatMap运算符进行注释,我可以得到从1到10的数字列表,这意味着toList将接收到onComplete信号。但当我想在flatMap中进一步处理数据时,它会消耗一个完整的信号,我无法得到任何结果。如何通过flatMap操作符传递onComplete信号

我有以下简单的程序:

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()
                }
            }
}
fun main(args:Array){
通知()
.flatmap{processData(it)}
托利斯先生()
.订阅(
{println(“onNext:$it”)},
{println(“onError:${it.message}”)}
)
}
fun notify():可流动{
返回可流动的。创建({emitter->
val random=random()
for(索引在1..10中){
emitter.onNext(索引)
Thread.sleep((random.nextInt(500)).toLong()
}
emitter.onComplete()
},背压等级。缓冲器)
}
有趣的processData(数据:Int):也许{
return Maybe.fromCallable{data}
.平面图{
if(it.mod(2)==0){
Maybe.fromCallable{it.toString()}
}否则{
也许吧,从来没有
}
}
}

而不是返回
Maybe.never()
使用
Maybe.empty()
。根据文档,
Maybe.empty()
应该立即发布
onComplete()