web-dev-qa-db-fra.com

Chaîne complétable en flux observable

Supposons que vous souhaitiez insérer un Completable dans votre chaîne Observable, comme pour chaque élément émis, il existe un complétable qui s'exécute et se bloque jusqu'à ce qu'il se termine, quelle option choisiriez-vous? (ici la Completable.complete() est juste pour faire un exemple)

  1. .flatMap { Completable.complete().andThen(Observable.just(it)) }

  2. .doOnNext { Completable.complete().blockingAwait() }

  3. autre chose?

16
Adi B
.flatMapCompletable { Completable.complete().andThen(Observable.just(it)) } // If you don't want it to return
.flatMap { Completable.complete().andThen(Observable.just(it)) } //Can be used if you want it to return Observable
13
Ankit Kumar

Dans l'option 2. vous perdez la possibilité d'annuler le complétable car blockingAwait() n'est pas géré par le flux observable.

Si vous n'avez pas besoin de renvoyer l'élément émis, il y a aussi flatMapCompletable.

Si vous devez exécuter le complétable mais aussi renvoyer l'élément émis, j'irais avec l'option 1.

4
ESala