Can anyone …
- explain why the following code keeps retrying indefinitely, once
retryWhen
is called? - correct the code to stop retrying when
Random.nextBoolean()
returnstrue
?
I think there is a 50% chance that retryWhen
is called because of Random.nextBoolean()
. However, once it is called, it goes into an infinite loop.
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()
}
Output:
retryWhen
retryWhen
retryWhen
⋮
(continued)