web-dev-qa-db-fra.com

Comment convertir l'Observable de rxJava2 en Completable?

J'ai un flux Observable, et je veux le convertir en Completable, comment pourrais-je le faire?

23
Stepango

La manière la plus fluide consiste à utiliser Observable.ignoreElements().

Observable.just(1, 2, 3)
.ignoreElements()

Reconvertissez-le via toObservable si nécessaire.

67
akarnokd

Vous pouvez faire quelque chose comme ci-dessous.

Observable<Integer> observable = Observable.just(1, 2, 3);
Completable completable = Completable.fromObservable(observable);

Comme sur un observable, vous devrez vous abonner à completable pour démarrer le processus asynchrone que Observable encapsule.

Plus de détails peuvent être trouvés ici dans le Java doc pour la méthode .

12
Praveer Gupta

Si je comprends bien, toutes ces solutions ne fonctionneront que si Observable appelle onComplete, ce qui n'est pas suffisant si vous voulez que votre résultat Completable se déclenche après le premier onNext ou onError, donc dans ce cas, je recommanderais ceci:

Observable<Integer> observable = Observable.just(1, 2, 3);
Completable completable = observable.firstOrError().ignoreElement()
1
Nokuap

Utilisez Completable.merge (YourObservable () ...

0
Nish

Vous pouvez utiliser Completable.fromObservable (xx). Cela fonctionne très bien sur mon projet.

0
DomonLee