我是RxJava的新手,所以我仍然试图让自己的头靠近它。我有一个Observable
代表一串按钮点击,所以它很热。每次点击该按钮时,我都想做一些I/O。如果失败,我想重复并尝试再次执行该I/O,直到成功。这似乎是一个使用retry()
或repeat()
的好机会,但那些只能用于热门的可观察对象,而不是冷的。正确的方式来重复发射事件流的操作
下面是一些伪代码来获得在我想要做的事:
buttonRequests
.map(actionEvent -> doIO())
.repeatAboveIfFailedUntilIOSucceeds()
.subscribe(...);
我使用flatMap
复制的事件考虑,也比使用skip
忽略其余的,如果它成功了,但不会干净地给我一个不确定的尝试次数。
什么是正确的方式来思考这个问题?
更多的例子你想重复一个失败的动作为每个按钮点击,直到成功?如果它正在重试并且新的游戏会发生什么? –
是的,我会重试每个按钮单击操作,直到它成功。我会禁用该按钮,以防止它在继续时被重新点击。 – Vultan