Rx -1-


Reactivie Programming


Reactive Programmingは、データストリームと伝達に関するプログラミングモードです.
我々は主にアルゴリズム問題のような手順に従って順次実行する命令式プログラミングである.Reactive Programminは、まずデータストリームを定義し、データが変更されたときに関連操作を実行します.すなわち,システムに問題が発生した場合,プログラマ自身がある機能を実行することを決定する.
従来のプログラミング方式をプッシュ方式、アクティブプログラミング方式をプッシュ方式と呼ぶ.データが使用されている場所(Consumer)から直接取得されて使用される場合、Pushはデータが変化した場所で新しいデータをConsumerに渡します.
したがって,Reactiveプログラミングは周囲環境と絶えず対話する.ただし,プログラム主導ではなく環境が変化すると,イベントを受信して操作することでインタラクションを行う.

RxJava


RxJavaはReactiveXのJava言語ライブラリです
  • ReactiveXは、非同期でイベントベースのプログラムを構成するための観察可能なライブラリです.
  • Observer Patternを拡張し、結合可能なシーケンスの演算子をサポートします.
  • 低レベルのThread、同期、Threadセキュリティ、およびブロックされていないI/Oへの懸念を軽減します.
  • RxJavaのランニングカーブは急です.これは,従来のスレッドベースのプログラミングを用いたJavaと方法が異なるためである.複数のスレッドを使用すると、予期せぬ問題が発生し、デバッグも困難になります.
    そこで,RxJavaは関数式プログラミング方式を導入した.関数式プログラミングはSide Effectのない純粋な関数に向いているのでThread-Safeである.
    ReactiveXを構成するこの方式の要因はObservableとOperatorである

    Marble Diagram


    タグDiagramはReactiveXを理解するための重要なツールです.
    次に,Marble Diagramが観測可能と観測可能の遷移をどのように表しているかを示す.(後述で紹介する観測マークDiagram)
  • 横線:Timeline
  • モデル(★,●,■,◆,…):観測可能データ(onNext generation)
  • 縦線(パイプ):データのパブリケーションが完了したことを意味します.パブリケーションが完了すると、データのパブリケーションが完了しません(onCompleteが発生します)
  • .
  • の中の箱:Operator、この箱を通ると、データは
  • になります.
  • 下の点線矢印:関数の入出力
  • をそれぞれ示す.
  • X:エラーが発生したことを示します.(発生onError)
  • 예제를 해석하면, ★, ▼, .., ◆ 데이터가 차례로 들어와 ◆ 이후 데이터 발행이 완료되었다.
    각 데이터는 flip 연산자를 거쳐 새롭게 변환되었으며(▼ -> ▲),
    초록색 오각형 이후 어떠한 오류로 인해 데이터 발행이 비정상적으로 종료되었다. 
    예제를 해석하면 ● 데이터 카운터 2개를 모아서 List 객체에 전달하고 3번째는 스킵합니다.

    REFERENCE

  • HERSTORY
  • Beom Dev Log
  • devAxe
  • ReactiveX