Rx java 如何在计数时限制retryWhen

Rx java 如何在计数时限制retryWhen,rx-java,rx-java2,rx-android,reactivex,Rx Java,Rx Java2,Rx Android,Reactivex,我在retryWhen中使用PublishSubject,以允许用户以类似的方式重试该操作。一切正常,但有一个问题-在用户单击重试3次后,我不应该再允许重试,应该中止操作。有没有办法将重试次数限制为3次? 我尝试了publishSubject.take(3)操作符,但它不起作用。操作符,例如retryWhen有一个二级流,其结果会影响主流。因此,也可以在此二次流上执行流操纵,因此可以应用各种操作符来塑造其结果: 调整这一点: final PublishSubject retrySubject=P

我在retryWhen中使用PublishSubject,以允许用户以类似的方式重试该操作。一切正常,但有一个问题-在用户单击重试3次后,我不应该再允许重试,应该中止操作。有没有办法将重试次数限制为3次?
我尝试了publishSubject.take(3)操作符,但它不起作用。

操作符,例如
retryWhen
有一个二级流,其结果会影响主流。因此,也可以在此二次流上执行流操纵,因此可以应用各种操作符来塑造其结果:

调整这一点:

final PublishSubject retrySubject=PublishSubject.create();
一次性。添加(
getData()
.doError(可丢弃->启用按钮())
.retryWhen(可观察->
可观察。zipWith(retrySubject,
(o,o2)->o
)

.采取(3)//请提供您正在使用的
retryWhen
设置。正如我前面提到的,您无法通过提供空源从内部停止
flatMap
。我仍然没有一个retryWhen设置可以按照我希望的方式工作,如果没有问题,我仍然在尝试找到一个符合我要求的设置记住…“我在retryWhen中使用了PublishSubject”。那么你有没有代码?正如我提到的,我有一个测试设置,与此相同,但它不完全符合我的要求。那么是什么阻止你应用
take(3)
关于从
retryWhen中返回的序列,最后一个问题是,在这种情况下,从PublishSubject更改为SingleSubject将影响take(3)操作?我希望减少陷阱,只允许发出onNext()或onError()请考虑一下
SingleSubject
代表什么。这意味着它只会发出1个值或错误,所以我想我只会在errorObservable的平面图中创建一个新值。但是很难测试它是否会影响take(3)操作与否。这没有任何意义。对那些不同的
单主题
调用
onSuccess
/
onError
将调用什么?我将通过接口方法-void onConnectionFailed(SingleSubject retrySubject);;将其传递给错误处理程序。错误处理程序可以选择调用retrySubject.onError()然后中止重试或调用retrySubject.onSuccess()重试