Je ne connais pas RxJava, alors j'essaie toujours de comprendre. J'ai un Observable
représentant un flux de clics sur les boutons, donc il fait chaud. Chaque fois que l'on clique sur ce bouton, je veux faire des E/S. Si cela échoue, je veux répéter et essayer de faire à nouveau cette E/S, jusqu'à ce qu'elle réussisse. Cela semble être une excellente occasion d'utiliser retry()
ou repeat()
, mais ceux-ci ne fonctionnent que sur des observables chauds, et non froids.Bonne façon de répéter une opération déclenchant un flux d'événements
Voici quelques pseudo-code pour obtenir ce que je suis en train de faire:
buttonRequests
.map(actionEvent -> doIO())
.repeatAboveIfFailedUntilIOSucceeds()
.subscribe(...);
J'ai pensé à utiliser flatMap
pour dupliquer l'événement et que l'utilisation skip
d'ignorer les autres si elle réussit, mais ne m'obtiendra pas proprement un nombre indéterminé de tentatives.
Quelle serait la bonne façon d'y penser?
Voulez-vous répéter une action a échoué pour chaque bouton-clic, jusqu'à ce qu'elle réussisse? Que devrait-il se passer si l'on réessaie et si un nouveau flappe? –
Oui, je réessayerais l'action pour chaque clic de bouton jusqu'à ce qu'il réussisse. Je désactiverais le bouton pour l'empêcher d'être recliqué pendant que ça se passe. – Vultan