2017-09-07 1 views
1

J'essaye de mettre en application l'idée suivante.RxJava exeute plusieurs observables dans une chaîne seulement sur le succès

Prenons le cas suivant

  1. Un utilisateur est invité avec un champ d'entrée
  2. Si l'utilisateur a saisi quelque chose, une autre boîte de dialogue apparaît afin de confirmer l'action précédente
  3. Si l'utilisateur a confirmé son actions alors un service est appelé.

Ce serait vraiment élégant si cela pouvait être implémenté en utilisant RxJava dans une chaîne.

Voici ce que j'ai essayé

PublishSubject<String> inputSubject = ...; 
PublishSubject<Boolean> confirmSubject = ...; 
PublishSubject<Integer> serviceSubject = ...; 

Je dois exécuter ces sujet dans une chaîne et le sujet suivant doit être exécuté que si le précédent a réussi et n'ont pas renvoyé une erreur.

Ces sujet sont contrôlées par différents objets et appelé de la manière ordinaire comme celle

dialogSubject.onNext(userInput); 
    dialogSubject.onCompleted(); 

S'il vous plaît suggérer s'il est possible de mettre en œuvre mon idée ou peut-être il y a de meilleures façons d'y parvenir?

Merci.

Répondre

0

Vous pouvez utiliser Sujet à chaîne l'émission d'une observable dans un autre

@Test 
public void chainObservables() throws InterruptedException { 
    Observable<Long> observable = Observable.just(1l); 
    Subject<Long, Long> publishSubject = ReplaySubject.create(1); 
    Subject<Long, Long> publishSubject2 = ReplaySubject.create(1); 
    interval.subscribe(publishSubject); 
    publishSubject.subscribe(publishSubject2); 
    publishSubject2.subscribe(System.out::println, (e) -> System.err.println(e.getMessage()), System.out::println); 
} 

passe ici observable l'élément à publishSubject et publishSubject à publishSubject2

Vous pouvez voir d'autres exemples de Hot observables ici https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/connectable/HotObservable.java