2017-10-05 12 views
0

J'ai une chaîne observable qui a observable infini sur les observables supérieurs et non infinis après elle. Comme ceci:RxJava 2 chaîne complète de la force avec l'observable infini

repo.infinitGetItems() 
     .switchMap(items -> Observable 
          .just(items) 
          .flatMap(items -> repo.nonInfinitObs(items))); 

Ce que je veux est de compléter toute la chaîne quand repo.nonInfinitObs envoie événement onComplete. Maintenant, il ne se termine pas parce que repo.infinitGetItems() est jusqu'à la vie. Puis-je faire quelque chose comme force complète pour la chaîne entière dans rxJava2?

Merci d'avance!

Répondre

1

Vous pouvez arrêter la séquence principale via takeUntil et des moyens d'écoulement externes:

PublishSubject<Integer> stop = PublishSubject.create(); 

repo.infinitGetItems() 
    .takeUntil(stop) 
    .switchMap(items -> repo.nonInfinitObs(items) 
         .doOnComplete(() -> stop.onComplete()) 
); 
+0

Merci! Je vais essayer. –

+0

Cela fonctionne comme un charme! Merci pour le temps et la réponse :) –