[RxSwift] 異なる型のストリームをまとめてdebounceする方法
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんばんは、@akio0911です。
RxSwiftを使っていて、異なる型の複数のストリームに対してdebounceをかけたいことがあったので、その方法を紹介したいと思います。
以下のようなObservableが2つあったとします。Observable<String>とObservable<Int>で型が異なります。
この2つに対してまとめてdebounceをかけてみましょう。
まずは型をまとめるためのenumを定義します。
まとめるためのenumを用意したら、mapを使って型の変換を行います。
ここではStringをValue.stringに、IntをValue.intに変換します。
ストリームの型としてはObservable<String>とObservable<Int>の両方をObservable<Value>に変換します。
2つのストリームの型がそろったので、mergeで1つのストリームにまとめます。
ストリームが1つにまとまったのでdebounceをかけることができます。
subscribeして必要な処理を書いてみましょう。
enum Valueとして1つにまとめられているので、switchを使って元々の値を取り出します。
なお、mapの部分は以下のように書くこともできます。
なぜなら、Value.stringはStringをValueに変換する関数、
Value.intはIntをValueに変換する関数でもあるからです。
参考になれば幸いです。
最近、iOSアプリ開発をテーマとしたオンラインサロンを作りました。気になる方はぜひチェックして頂ければと思います。


関連記事
この記事が気に入ったら「いいね!」しよう
Twitterで更新情報をゲット!