RxJava - Reactive Streams のルール
Reactive Streamsの仕組みを理解する上で重要なルールを簡単に説明します。
詳しくは、以下の公式リポジトリの README.md を参照してください。
重要なルールは主に4つです。
- 購読を開始する通知である onSubscribe は購読につき一度だけ通知する
- 通知は順を追ってつぎつぎに行われる
- null は通知しない
- Publisherの処理の終了は、 onComplete(処理の完了)または onError (処理の異常終了)を通知することで行う
onSubscribe は購読につき一度だけ通知する
購読の開始を意味する onSubscribe は、一度だけしか行われません。
通知は順を追って次々に行われる
通知は必ず一つずつ順次(シーケンシャルに)行われます。複数の通知が一度に行われることはあり得ません。RxJava では Observable契約 というルールがあり、これがデータが複数同時に通知されることによる不整合を防いでくれています。
null は通知しない
null は通知できません。Reactive Streams で 仮に null が通知されようとしたときは NullPointerException が起こるようになっています。通常のデータの通知である onNext だけでなく、 エラー時の通知 onError においても null は許容されません。
完了またはエラーによって Publisher は処理を終了する
Publisher が処理を終了する契機は2つしかありません。onComplete で完了させるか、 onError によってエラーで終了するか、です。これら2つのいずれかが通知された購読は、それ以降データを通知することはありません。つまり、 onComplete や onError の後に何らかの処理を続行することはできません。
次の記事
参考
RxJavaリアクティブプログラミング (CodeZine BOOKS)
- 作者: 須田智之
- 出版社/メーカー: 翔泳社
- 発売日: 2017/02/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る