私はrxjavaが初めてです。異なるタイプのオブジェクトを放出する2つのオブザーバブルを組み合わせる必要があります。何かのようなもの Observable<Milk>
およびObservable<Cereals>
およびObservable<CerealsWithMilk>
。私はこのような何かの演算子を見つけることができませんでした。このようなことをするrxの方法は何ですか? Milk
とCereals
は非同期であることに注意してください。
必要なものを正確に知らずに言うのは難しいですが、おそらく Zip() または combineLatest() です。
Zip
は両方を取りますObservable<Milk>
およびObservable<Cereals>
そして提供された関数を介してそれらをCerealsWithMilk
に結合させます。これはget both a CerealsWithMilk
and a Milk
を取得するたびに新しいCereals
を発行します。
combineLatest
はZip
と似ていますが、just新しいCerealsWithMilk
orだけが新しいMilk
が発行される場合でも、新しいCereals
を発行します。
異なるタイプのオブザーバブルをマージする場合は、 Observable.Zip
を使用する必要があります。
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.Zip(o1, o2, (a, b) -> a + b);
result
は、(a, b) -> a + b
からo1
のアイテムとo2
のアイテムのアプリケーションを生成するオブザーバブルです。 "a1", "b2", "c3"
を生成する観測可能な結果になります。
任意の関数を使用できます。例えば
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.Zip(o1, o2, (a, b) -> myFunc(a, b));
//...
private String myFunc(String a, Integer b) {
//your code here
return someString;
}