我试图制作一个更短的代码,但是它似乎还不足以让它可读,所以我最终得到了以下内容:
Flowable
.defer (return new outer observable upon subscribing)
.retryWhen ( ->
Flowable.flatMap throwable when recieve a 400
valve.onNext(false)
-> Flowable.defer ( return new Network_A_Observable)
.retryWhen ( ->
Flowable.flatmap throwable when receive 500)
valve.onNext(true)
)
.compose(flowable valve (i intentionally put a false here))
.subscribe(new subscriber)
这是我的long-non-lambda代码的非常短版本,它执行一系列网络调用并在某些条件下适当地重试。
我没有遇到重试并为每次重试发出新的外部可观察量的问题(因为这已在我的其他帖子中解决,但不确定它是否与我当前的问题有关),现在我注意到当我执行时比方说,2个异步网络调用,它返回两个不同的值,虽然这两个值是有效的,当然可观察的流按预期工作,这是我打算做的(当发生一些错误时重试),现在我意识到我应该" PAUSE"下一个电话流,搜索" 如何暂停一个可观察的,直到我找到 FlowableTransformer.valve(),这在RxJava2Extensions上可用,我运行了一个来自博客的代码片段暂停/继续流,但当我在上面的代码上尝试时,如果 valve 设置为 false ,则会继续完成整个流动的流。
我错过了什么吗?
非常感谢任何帮助。