目次
1. mergeとCombineLatest
RxSwift+MVVM → Combine+TCAにリファクタしている過程で以下の疑問点が湧いてきました。marge
とCombineLatest
どちらもストリームを束ねる点では共通です。
では、何が違うのか解説していきます。
2. merge
merge
は2つのストリームを束ねて、どちらかが流れてきたら実行しまっせという感じです。
mergはOR条件と思っておけば良いでしょう!
import RxRelay
class ExampleViewModel {
// input
let didTappedIndexButton = PublishRelay()
let didInputtedTextField = PublishRelay()
t didInputtedTextField = PublishRelay()
init() {
let fetchSomethingResult = Observable.merge(didTappedButton, didInputtedTextField)
print("ログインボタンorテキストフィールドのどちらかがタップされました")
}
上のコードでは、ログインボタンorテキストフィールドのどちらかがタップされた時にprintが実行されます。
3. CombineLatest
両方が流れてきたら実行しまっせという感じです。
CombineLatestはAND条件と思っておけば良いでしょう!
import RxRelay
class ExampleViewModel {
// input
let didTappedIndexButton = PublishRelay()
let didInputtedTextField = PublishRelay()
let didTappedIndexButton = PublishRelay()
let didInputtedTextField = PublishRelay()
init() {
let fetchSomethingResult = Observable. combineLatest(didTappedButton, didInputtedTextField)
print("ログインボタンandテキストフィールドの両方がタップされました")
}
上のコードでは、ログインボタンandテキストフィールドの両方がタップされた時にprintが実行されます。
(状況的にあり得るかは置いておいて笑)
4. おわりに
今回も本記事を読んでいただきありがとうございました。
似たような考え方でややこしいですが、AND条件、OR条件と思うとシンプルだと思います♫
コメント