RxJavaは最近導入しました Single 。元のオブザーバブルのソースを変更せずに、既存のオブザーバブル(ほとんどシングル)をシングルに変換する方法はありますか?
たとえば、Observableを返すメソッドを持つAPIサービスクラスがあります。これは、基本的にリモートリソースからユーザーを取得しています。サービスを変更できないとしましょう。私はこれを他の場所で消費したいが、シングルを返したい。どうすればいいですか?
さらに背景をピンチする
RxJavaは最近、Rxに優しいシンプルなコールバック(つまり、1つのオブジェクトまたはエラーを出力するObservable)であるSingleの概念を導入しました(詳細については、こちらを参照してください- http://reactivex.io/documentation/ single.html )
別の答えは時代遅れだと思います。おそらく次の方法を確認する必要があります。
singleOrError:ソースが1項目より長い場合はIndexOutOfBoundsExceptionのみを、ソースが空の場合はNoSuchElementExceptionを発行します。
firstOrError:ソースが空の場合、最初の要素またはNoSuchElementExceptionを発行します。
lastOrError:ソースが空の場合、lastelementまたはNoSuchElementExceptionを発行します。
elementAtOrError:index番目の要素またはNoSuchElementExceptionを発行します。
このページの詳細: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.
これを実現するために、2つの新しい便利なメソッドが追加されました。
toSingle()
は、単一のアイテムを発行するObservableを、そのアイテムを発行するSingleに変換します
toObservable
は、Singleを、Observableに変換します。このObservableは、Singleによって発行された項目を発行し、完了します
rxjava2では、Single.fromObservable()
を使用できます。