web-dev-qa-db-fra.com

RxJava2 Convertir Flowable en Single

Comment convertir un Flowable en un Single? Ou s'il existe un autre moyen de faire cesser l'émission après la première réponse qui est également intéressant.

J'ai essayé mais cela ne semble pas fonctionner:

  disposables.add(
        repository.getAllSomethings()
           .subscribeOn(SchedulerProvider.getInstance().computation())
           .observeOn(SchedulerProvider.getInstance().ui())
           .toSingle()
           .subscribeWith(object : DisposableSingleObserver<List<Something>>() {
                override fun onSuccess(t: List<Something>) {
                }

                override fun onError(e: Throwable) {
                }
            })

getAllSomethings () renvoie un Flowable<List<Something>>

Dans le code ci-dessus, .subscribeWith() est souligné en rouge et se plaint que:

Type parameter bound for E in 
fun <E : SingleObserver<in Flowable<List<Something>!>!>!> subscribeWith(observer: E!): E!
is not satisfied: inferred type  ! is not a subtype of SingleObserver<in Flowable<List<Something>!>!>!
8
Michael Vescovo

Ok donc grâce à @akarnokd j'ai trouvé la réponse comme vous pouvez le voir dans les commentaires.

En m'apprenant à pêcher plutôt que de me donner la réponse directe, il a suggéré de regarder ici: http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Flowable.html (qui vraiment J'aurais dû le faire en premier lieu!).

En y regardant, j'ai trouvé firstOrError() qui résout mon problème.

Même si l'objet que j'appelais toSingle() était un Flowable, le IDE ne s'est pas plaint. Pourtant, en regardant le lien ci-dessus, toSingle() isn 't même une option valable!

21
Michael Vescovo