gpt4 book ai didi

kotlin - 带有toList的RxJava flatMap

转载 作者:行者123 更新时间:2023-12-02 13:22:29 25 4
gpt4 key购买 nike

有人可以解释我如何在RxJava中通过flatMap运算符传递onComplete信号吗?

如果对flatMap运算符进行注释,则可以获取1到10的数字列表,这意味着toList将收到onComplete信号。但是,当我想在flatMap中进一步处理数据时,它将消耗onComplete信号,但我无法获得任何结果。如何通过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()
}
}
}

最佳答案

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

关于kotlin - 带有toList的RxJava flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52431198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com