【Kotlin/Android】RxJavaのcombineLatestメソッドの使い方!複数結合

この記事からわかること

  • Android Studio/KotlinRxJava使い方
  • combineLatestメソッドとは?
  • 複数Observable1つにまとめて監視する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

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)

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index