Kotlin RxJava';当你不经意间一直在努力时
谁能Kotlin RxJava';当你不经意间一直在努力时,kotlin,rx-java,rx-java3,retrywhen,Kotlin,Rx Java,Rx Java3,Retrywhen,谁能 解释为什么调用retryWhen时,以下代码会无限期地重试一次 更正代码以在Random.nextBoolean()时停止重试 返回true 我认为由于Random.nextBoolean(),调用retryWhen时有50%的可能性。然而,一旦被调用,它就会进入一个无限循环 import io.reactivex.rxjava3.core.Observable 导入kotlin.random.random 主要内容(){ 可观察 .just(单位) .平面图{ if(Random.nex
retryWhen
时,以下代码会无限期地重试一次Random.nextBoolean()时停止重试
返回true
Random.nextBoolean()
,调用retryWhen
时有50%的可能性。然而,一旦被调用,它就会进入一个无限循环
import io.reactivex.rxjava3.core.Observable
导入kotlin.random.random
主要内容(){
可观察
.just(单位)
.平面图{
if(Random.nextBoolean()){
可观察的。仅(单位)
}否则{
可观察错误(Throwable())
}retryWhen先生{
它是平面图{
println(“retryWhen”)
可观察的。仅(单位)
}
}
}
.subscribe()
}
输出:
retryWhen
retryWhen
retryWhen
⋮
(continued)
retryWhen
应用于if语句任一分支的执行结果
retryWhen
操作符链接到flatMap
生成的流:
retryWhen
应用于if语句任一分支的执行结果
retryWhen
操作符链接到flatMap
生成的流:
请看一看同样的 答案:
retryWhen
在观察者订阅时调用所提供的函数,这样您就有了一个主序列,并伴随着一个序列,该序列发出主序列失败的可丢弃的。您应该在这个函数中得到的可观察的
上组合一个逻辑
,因此最后,一个可丢弃的
将在另一端产生一个值
我想你的期望是:
可观察
.just(单位)
.平面图{
if(Random.nextBoolean()){
可观察的。仅(单位)
}否则{
可观察错误(Throwable())
}retryWhen先生{
需要一段时间{
Random.nextBoolean()
}
doOnNext先生{
println(“retryWhen”)
}
}
}
.subscribe()
请看同样的图片
答案:
retryWhen
在观察者订阅时调用所提供的函数,这样您就有了一个主序列,并伴随着一个序列,该序列发出主序列失败的可丢弃的。您应该在这个函数中得到的可观察的
上组合一个逻辑
,因此最后,一个可丢弃的
将在另一端产生一个值
我想你的期望是:
可观察
.just(单位)
.平面图{
if(Random.nextBoolean()){
可观察的。仅(单位)
}否则{
可观察错误(Throwable())
}retryWhen先生{
需要一段时间{
Random.nextBoolean()
}
doOnNext先生{
println(“retryWhen”)
}
}
}
.subscribe()
Observable
.just(Unit)
.flatMap {
if(Random.nextBoolean()) {
Observable.just(Unit)
} else {
Observable.error(Throwable())
}
}
.retryWhen {
it.flatMap {
println("retryWhen")
Observable.just(Unit)
}
}
.subscribe()