2017-10-02 7 views
0

J'essaie d'assembler un objet résultat en appelant trois services http de manière asynchrone. Chaque service renverra un champ différent.Java rx assembler l'objet résultat de trois appels asynchrones

Comment puis-je y parvenir?

J'ai quelque chose comme ceci:

Résultat obj

public class ResultObj { 
    int resStudents; 
    int resClasses; 
    int resGrades; 
} 

Méthode

 ResultObj result = new ResultObj(); 


Observable.merge(studentService.fetchTotal(), classesService.fetchTotal(), gradesService.fetchTotal()) 
       .toBlocking(); 

Et maintenant? Comment puis-je obtenir chaque résultat et le définir dans ResultObj dans le champ approprié (le résultat des classes pour les classes et le résultat des élèves pour les étudiants).

Pour l'instant, chaque calll récupère l'observation d'un nombre aléatoire.

Cordialement, Ido

Répondre

0

Vous devriez prendre un look à CombineLatest.

Observable.combineLatest(
    studentService.fetchTotal(), 
    classesService.fetchTotal(), 
    gradesService.fetchTotal(), 
    (studentTotal, classesTotal, gradesTotal) -> { 
     // do your stuff 
     return studentTotal + classesTotal + gradesTotal; 
    }) 
    .subscribe(
     total -> System.out.println(total) 
    ) 
); 
+0

Ceci ne fonctionne pas en parallèle. Je mets le sommeil sur le premier appel et les impressions de journal mais je vois qu'ils courent seraily. –