【Kotlin/Android】RxJavaのcombineLatestメソッドの使い方!複数結合
この記事からわかること
- Android Studio/KotlinでRxJavaの使い方
- combineLatestメソッドとは?
- 複数のObservableを1つにまとめて監視する方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
combineLatestメソッドの使い方
RxJavaのcombineLatest
メソッドは複数のObservableを結合したObservableを返します。結合されるObservableは複数のObservable全てから値が流れてこないと発行されません。逆に一度発行されると、いずれかのObservableから値が流れてくるたびにキャッシュされていた値を利用して結合したObservableが発行されます。
例としてバリデーションロジックを実装する時など「全てがtrueの場合のみ処理を実装」する場合で考えてみます。
val observable1 = Observable.just(true)
val observable2 = Observable.just(true)
val observable3 = Observable.just(false)
Observable.combineLatest(
observable1,
observable2,
observable3,
{ boolA, boolB, boolC -> boolA && boolB && boolC }
).subscribeBy(
onNext = { result -> Log.d("RxJava", "Received: $result") },
onComplete = { Log.d("RxJava","Completed") }
).addTo(compositeDisposable)
まとめられる最大個数
combineLatest
は引数の個数違いで複数定義されていますが、用意されているのは最大9個までのようです。
val observable1 = Observable.just(true)
val observable2 = Observable.just(true)
val observable3 = Observable.just(false)
val observable4 = Observable.just(true)
val observable5 = Observable.just(true)
val observable6 = Observable.just(false)
val observable7 = Observable.just(true)
val observable8 = Observable.just(true)
val observable9 = Observable.just(false)
Observable.combineLatest(
observable1,
observable2,
observable3,
observable4,
observable5,
observable6,
observable7,
observable8,
observable9,
{ bool1, bool2, bool3 ,bool4, bool5 ,bool6 ,bool7, bool8 ,bool9 -> true }
).subscribeBy(
onNext = { result -> Log.d("RxJava", "Received: $result") },
onComplete = { Log.d("RxJava","Completed") }
).addTo(compositeDisposable)
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。