開発者ドキュメント

RxJava


1前書き

このチュートリアルでは、RxJavaの

Maybe <T>

型を見てみましょう。これは、単一の値を発行し、空の状態で完了するか、エラーを報告することができるストリームを表します。


2

Maybe

タイプ


Maybe

は特別な種類のリンクです。/rx-java[

Observable

]は0個または1個のアイテムしか発行できず、ある時点で計算が失敗した場合はエラーを報告します。

この点で、それは

Single



Completable

の和集合のようです。

Maybeを含むこれらすべての縮小型は、

Flowable

演算子のサブセットを提供します。これは、操作が0個または1個の項目に対して意味がある限り、

Maybe



Flowable__のように操作できることを意味します。

1つの値しか出力できないため、

Flowable

のように背圧処理はサポートされません。

Maybe.just(1)
  .map(x -> x + 7)
  .filter(x -> x > 0)
  .test()
  .assertResult(8);


Maybe

ソースから購読できる

onSuccess、onError

、および

onComplete

シグナルがあります。

Maybe.just(1)
    .subscribe(
        x -> System.out.print("Emitted item: " + x),
        ex -> System.out.println("Error: " + ex.getMessage()),
        () -> System.out.println("Completed. No items.")
     );

このソースは成功値を発行するので、上記のコードは

Emitted item:1

を出力します。

同じ購読の場合:


  • Maybe.empty()。subscribe(…​)

    は、印刷されます

    “完了しました。アイテムはありません。”


  • Maybe.error(new Exception(“ error”))。subscribe(…​)

    は“ __Errorを出力します。

エラー”__

  • これらのイベントは

    Maybe

    と相互に排他的です。** つまり、

    onComplete



    onSuccess

    の後に呼び出されることはありません。

    onComplete

    は、場合によってはいくつかの

    onNext

    呼び出しが行われた後でも、ストリームが完了したときに呼び出されるため、これは

    Flowable

    とは少し異なります。


Single



Maybe

のような

onComplete

シグナルを持っていません。なぜならそれは一つのアイテムを放出するか失敗する可能性がある反応的なパターンを捉えることを意味するからです。

一方、

Completable



onSuccess

を欠いています。これは、完全/失敗の状況のみを扱うことを意図しているからです。


Maybe

タイプのもう1つのユースケースは、__Flowableと組み合わせて使用​​することです。

Flowable<String> visitors = ...
visitors
  .skip(1000)
  .firstElement()
  .subscribe(
    v -> System.out.println("1000th visitor: " + v + " won the prize"),
    ex -> System.out.print("Error: " + ex.getMessage()),
    () -> System.out.print("We need more marketing"));


4結論

この短いチュートリアルでは、RxJava

Maybe <T>

の使い方と、

Flowable、Single

、および

Completable.

などの他のリアクティブ型との関係について簡単に説明しました。

いつものように、コードサンプルはhttps://github.com/eugenp/tutorials/tree/master/rxjava-2[over on GitHub]にあります。

モバイルバージョンを終了