[解決済み] RxJavaのObservable、Completable、Singleの違いは何ですか?
質問
RxJavaのObservable、Completable、Singleの違いをわかりやすい例で説明していただける方、いらっしゃいますか?
どのようなシナリオで、他のものより1つを使用するのでしょうか?
どのように解決するのですか?
Observable
は一般的なReactiveXのビルディングブロックであり、時間の経過とともに値を放出するイベントソースです。(従って、ReactiveX が拡張するすべての言語に存在します)
要するに Observable イベントは
onNext* (onCompleted | onError)? /(* ゼロ以上 ? - ゼロまたは1)
Single
そして
Completable
は、RxJavaでのみ導入された新しい型です。
Observable
の縮小型を表し、より簡潔なAPIを持っています。
Single
表す
Observable
を表し、単一の値またはエラーを出力します。
Completable
表す
Observable
は、値を出力せず、終端イベントのみを出力します。
onError
または
onCompleted
差分は、メソッドが返す差分のようなものだと考えればよいでしょう。
-
オブジェクトのコレクション - Observable
-
単一オブジェクト - Single
-
と値を返さないメソッド(voidメソッド) - Completable.
Single
は、タスク指向のObservableで、単一の値を期待する場合に適しています。例えば、ネットワークリクエストは一度実行されると値(またはエラー)を返しますが、ネットワークコールは一回で操作されます。他の例としては、DBのデータフェッチ操作がある。
Completable
がある場合に適切です。
Observable
を持っていて、操作の結果得られる値には興味がない、あるいは何もない場合に適しています。
例えば、キャッシュの更新のようなもので、操作は成功するか失敗するかのどちらかですが、値はありません。
もう一つの例は、何も返さない長時間実行される初期化操作です。これは、成功表示のみをもたらしたUPDATE/PUTネットワーク呼び出しである可能性があります。
いずれにせよ、CompletableとSingleは新しい機能を追加するのではなく、APIが公開するObservableの背後にある操作についてより多くを語る、より堅牢で簡潔なAPIを導入しているのです。
編集する。
RxJava2
Maybe
:
RxJava2には、新しい型である
Maybe
,
Maybe
の組み合わせは
Completable
とSingleの組み合わせです。
上のような同じ言語で
Maybe
を返すメソッドと考えることができます。
Optional
を返すメソッドと考えることができます。
Optional
はObjectのラッパーで、何らかの値を持っているかどうかを明示的に教えてくれます -。
Object
であるかどうかを明示的に伝えます(NULLの代わりに)。
と共に
Maybe
のように正確に値を指定することもできます。
Single
のように何も返さないこともできます。
Completable
. さらに、両方のように、エラーが発生します。
Maybe
は
Observable
が値を持たず、そのまま完了する可能性があることを示したい場合に有効です。
例として、キャッシュから取得した場合、必ずしもキャッシュに値があるとは限らないので、この場合、補完されることになります。
onNext
をキャッシュからの値で補完します。
これは、RxJava2でストリーム中の非NULL値を処理するのにも価値があります。
RxJava2
Flowable
:
まず、背圧の定義について説明します。 バックプレッシャーとは、データが処理できる速度よりも速く生成される状況に対処するための手段です。
Flowable
にはバックプレッシャーのサポートがあり、ダウンストリームがアイテムを要求することができます。 違いについて詳しくは
はこちら
.
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン