2014-09-16 2 views
3

Ecriture en Java J'appelle la méthode zip() qui reçoit quelques méthodes qui retournent un Observable < ...>.Débogage de l'opérateur zip RxJava qui s'arrête

Actuellement, je ne suis pas en mesure de passer à la carte suivante et cela est probablement dû au fait que l'une des méthodes n'a pas encore retourné une valeur. (Bien qu'il semble que toutes les méthodes ont été appelées.)

Existe-t-il un moyen de déboguer le processus et de voir pourquoi il est bloqué?
Merci.

Répondre

5

Supposons que vous ayez:

result = Observable.zip(sourceA, sourceB, sourceC) 

Il suffit d'ajouter un .doOnNext() sur chacune des sources pour se connecter ce qu'ils émettent (ou au lieu de doOnNext, abonnez-vous à chacun). Par exemple:

result = Observable.zip(sourceA.doOnNext(/*logging...*/), 
         sourceB.doOnNext(/*logging...*/), 
         sourceC.doOnNext(/*logging...*/)) 

ce qui se passe probablement est que l'une de ces sources n'émet pas à la même fréquence que les autres. zip doit être utilisé lorsque vous savez strictement que toutes les sources émettent des événements au même rythme/fréquence. Vous pouvez essayer d'utiliser combineLatest. La différence entre les deux est:

  • zip: le retour Observable n'émet le nième élément 'combinaison' que lorsque tous les n-ième éléments des sources ont été émis. Voir un diagram. CombineLatest: l'objet Observable renvoyé émet un élément 'combinaison' chaque fois que l'une de ses sources émet un élément. Voir un diagram.
Questions connexes