J'ai le code de travail suivant:joindre plusieurs exécutions de rappel dans un CompletableFuture
DiscoveryCallback callback = new DiscoveryCallback();
Manager.discover(someparam, callback);
Je veux envelopper cet appel dans un CompletableFuture d'avoir une API Rx-ish de composer avec d'autres opérations asynchrones. Manager.discover() est une méthode d'une bibliothèque tierce qui est en fait une liaison pour les fonctions natives et exécute le rappel plusieurs fois, dans différents threads.
Mon DiscoveryCallback implémente l'interface suivante:
interface onFoundListerner {
onFound(List<Result> results)
onError(Throwable error)
}
J'ai essayé d'injecter une instance de CompletableFuture<List<Result>>
dans DiscoveryCallback puis appeler la méthode complète. Cela fonctionne bien pour une exécution de rappel, les autres sont ignorés.
Comment puis-je joindre les résultats de ces multiples exécutions et rendre mon wrapper renvoyer un seul CompletableFuture?
Peut-être un 'Iterator' ou' Stream' serait plus approprié que 'CompletableFuture's. – acelent
De cette façon mon emballage bloquerait. J'ai besoin d'une API réactive sur le client mais je ne suis pas autorisé à compter sur RxJava. Btw, avec Observables tout fonctionne comme prévu. – thiagogcm