web-dev-qa-db-ja.com

RxJava2のFlowableからSingleへの変換

Flowableをシングルに変換するにはどうすればよいですか?または、最初の応答の後でそれが放出を停止する別の方法がある場合は、これも重要です。

私はこれを試しましたが、うまくいかないようです:

_  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()は_Flowable<List<Something>>_を返します

上記のコードでは、.subscribeWith()に赤い下線が引かれ、

_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

わかりましたので、@ akarnokdのおかげで、コメントでわかるように答えを見つけました。

彼がここで見ることを提案したストレートな答えを与えるのではなく、釣り方を教えてくれた: http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Flowable.html (本当にそもそもやるべきだった!).

そこを見ると、私の問題を解決するfirstOrError()が見つかりました。

私がtoSingle()を呼び出していたオブジェクトはFlowableでしたが、IDEは文句を言いませんでした。それでも上記のリンクを見ると、toSingle() isn有効なオプションさえありません!

21
Michael Vescovo