gpt4 book ai didi

java - 在重试谓词上执行并从 observable 返回值

转载 作者:行者123 更新时间:2023-12-02 11:43:54 25 4
gpt4 key购买 nike

使用可观察和发出值执行任务

private val performTask = io.reactivex.Observable.create<Boolean>({ emitter ->
// do somethinf
emitter.onNext(true)
emitter.onComplete()
})

//这也是重试时的另一个可观察值。我想重试 2 次,但前提是执行任务成功。

fun <T> io.reactivex.Observable<T>.retryAuth(): Observable<T> {
return this.retry ({ count, error ->
if (count == 2 && error is ApolloException) {
// do something with performTask and return the value

} else false
})

只需要说明如何实现这一点

最佳答案

您可以使用retryWhen:

this.retryWhen({ errors ->
val counter = AtomicInteger()
.flatMap({ error ->
if (counter.incrementAndGet() <= 2 && error is ApolloException) {
return performTask
.flatMap({ result ->
if (result) {
return Observable.just(true)
}
return Observable.error(error)
})
}
return Observable.error(error)
})
})

关于java - 在重试谓词上执行并从 observable 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48347759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com