问题是关于 RxJava2。
Throwable
请注意,来自retryWhen
with 的zipping会在应用 zipper 功能之前range
发出所有项目。Observable.range
此外,range
即使zipWith
没有被调用,也会发出序列。例如这个源代码
Observable.create<String> {
println("subscribing")
it.onError(RuntimeException("always fails"))
}
.retryWhen {
it.zipWith(Observable.range(1, 3).doOnNext { println("range $it") },
BiFunction { t: Throwable, i: Int -> i })
.flatMap {
System.out.println("delay retry by $it + second(s)")
Observable.timer(it.toLong(), TimeUnit.SECONDS)
}
}./*subscribe*/
给出以下结果
range 1
range 2
range 3
subscribing
delay retry by 1 + second(s)
subscribing
delay retry by 2 + second(s)
subscribing
delay retry by 3 + second(s)
subscribing
onComplete
onError
在创建中替换observable
也不会消除发射range
项目。所以问题是为什么它会像Range
冷一样发生。