メモ書きレベルですが
Signal とは
- replay しない Driver
- VIPER のようなアーキテクチャでレイヤ間をストリームで繋いでいる場合、View からの UI イベントを Presenter に流すストリームなんかは replay する必要がないので Driver でなく Signal で良さそうですね
- 逆に Presenter から View に何か表示する状態 (ViewModel とか) を渡すときには最新の状態を replay してくれる Driver の方が良さそうです
Relay とは
- Error と Complete の流れない Subject
-
PublishRelay
,BehaviorRelay
がある-
PublishRelay
の実装を見るとPublishSubject
をラップして Next しか流せないようにしてるだけというのがわかる https://github.com/ReactiveX/RxSwift/blob/4.0.0/RxCocoa/Traits/PublishRelay.swift
-
- エラーが流れないということは
onErrorRecover:
onErrorDriveWith:
onErrorJustReturn:
を指定しなくてもasDriver()
,asSignal()
できる?-
BehaviorRelay
はasDriver()
しかできなくてPublishRelay
はasSignal()
しかできない- replay するストリームと replay しないストリームは型レベルで分けていきたいのかな...? (推測)
- なんか
ObservableConvertibleType
のasSharedSequence
も deprecated にするみたいですね https://github.com/ReactiveX/RxSwift/pull/1443#issuecomment-335515890
-
asSignal()
はどちらからもできる
-