メモ書きレベルですが
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()はどちらからもできる
-