RxSwift まとめ
はじめに
RxSwiftについてまとめた内容をアップします。(ま今後も随時編集していきます)
目次
RxSwiftが受け入れられる理由は?
- メソッドチェインを使いつなげた関数型プログラミング
- 時間の概念を取り入れたリアクションをコードにできる( ex: debounceメソッド)
- MVVMによる処理の分離テストと書きやすさ
DriverとSignal
Driver の効力
subscribe +
- メインスレッドで通知
- shareReplayLatestWhileConnected を使った Hot変換
- エラーを伝達しないことを前提とする
Signal
replayされないDriver
⇨ replayされない = 過去のイベントを保持せず、なおかつ値を保持しないこと。
UIButtonのタップイベントなどに向いている。
Trait
メリット
Observableの生成 + read-only
ex) Single, Completable, Maybe
Hot-Cold
- HotなObservableはsubscribeされなくても動作する。
- HotはObservableは前のColdを動作させる。
- HotなObservableは分岐できる。
- HotなObservableはObserverを複数持てる。
- HotなObservableのイベントは各Observerで共有される。
- 各Observerに対して同じイベントが送出される。つまりそこまでのColdは何度も呼ばれない(分岐の性質)。
- すでに流れたイベント(Next)は送出されない。つまり途中からsubcribeすると途中からしか受け取れない。
- ColdなObservableはsubscribeするまで動作しない
- ColdなObservableは分岐できない
- ColdなObservableはObserverを1つしか持てない。2つ持とうとするとストリームが2つになる。
参考: 今日こそ理解するHot / Cold @社内RxSwift勉強会
Hot変換
- Hot変換するには
- ConnectableObservableに変換後、connect()を呼ぶ
- RefCountに対して1つ以上subscribeを行う。(RefCountはsubscribeすることによって内部でconnect()を呼び出す)
- ConnectableObservableに変換後、connect()を呼ぶ
- RefCountに対して1つ以上subscribeを行う。(RefCountはsubscribeすることによって内部でconnect()を呼び出す)
参考: 今日こそ理解するHot変換
参考文献
Author And Source
この問題について(RxSwift まとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/coffee_scinf17/items/f6a1e2fc7fda385d8d33著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .