任何人都可以……</p>
- 解释为什么下面的代码会无限期地重试,一旦
retryWhen
被调用? Random.nextBoolean()
更正代码以在返回时停止重试true
?
我认为有 50% 的机会retryWhen
因为Random.nextBoolean()
. 但是,一旦调用它,它就会进入无限循环。
import io.reactivex.rxjava3.core.Observable
import kotlin.random.Random
fun main() {
Observable
.just(Unit)
.flatMap {
if (Random.nextBoolean()) {
Observable.just(Unit)
} else {
Observable.error(Throwable())
}.retryWhen {
it.flatMap {
println("retryWhen")
Observable.just(Unit)
}
}
}
.subscribe()
}
输出:
retryWhen
retryWhen
retryWhen
⋮
(continued)