2015-09-13 1 views
3

Je travaille sur mon Observables personnalisé afin de les rendre plus réutilisables dans tout mon code et je me demande de la meilleure façon de le faire.Comment créer des observables personnalisés en utilisant RxJava?

Ce que je fais est juste l'implémentation de l'interface Observable.OnSubscribe<> et de travailler à la méthode call().

Fondamentalement, je veux m'abonner à un autre Observable et en fonction de son résultat, émettre une ou plusieurs données conditionnellement. Est-ce une mauvaise pratique de s'abonner à un autre Observable à l'intérieur de la méthode call() susmentionnée? Cela me semble au moins maladroit. Ou devrais-je utiliser un opérateur Rx d'une manière différente que je ne suis pas (encore) au courant? Je n'emploie pas Java8 et Retrolambda, donc s'il vous plaît, n'utilisez pas lambdas sur les réponses possibles.

Répondre

3

Créer des gammes d'observations personnalisées de difficile à difficile et je ne le recommanderais pas comme première étape. Votre scénario peut être résolu par flatMap:

source.flatMap(new Func1<Integer, Observable<Integer>>() { 
    @Override 
    public Observable<Integer> call(Integer value) { 
     if (value < 5) { 
      return Observable.empty(); 
     } 
     return Observable.just(value * 2); 
    } 
}); 

Est-ce une mauvaise pratique de souscrire à un autre Observable dans la méthode précitée appel()?

Non, mais vous devez éviter ce qu'on appelle plusieurs appels onStart en enveloppant le Subscriber entrant via Subscribers.wrap().