出错重试应该是App中最常用的功能了,我常用的的操作符是retry,代码如下:
.retry { _ -> if (retryTime == 0) { ++retryTime true } else false }今天想尝试下retryWhen操作符,一开始代码如下:
.retryWhen { ALog.e("aac开始重试了!") ++retryTime Observable.timer(5, TimeUnit.SECONDS); }结果一开始订阅就直接进到retryWhen了,而且下游也收不到事件!搞了很久原来需要这样:
.retryWhen { it.flatMap { ALog.e("aac开始重试了!") ++retryTime //如果发射的onError就终止 // return Observable.error<Any>(Throwable("retryWhen终止啦")) Observable.timer(5, TimeUnit.SECONDS); } }问题解决