2016-06-13 5 views
1

リクエストを処理するために2つのオブザーバブルを待つ必要があります。リクエストの種類は異なります。戻り値の異なる2つの観測値を待つ方法はありますか?

observable1 = Observable.create((observer: Subscriber<Type1> => ...) 

observable2 = Observable.create((observer: Subscriber<Type2> => ...) 

どのように私は、このような

observable1.subscribe(result1 => { 
    observable2.subscribe(result2 => { 
     ... 
     <do something with result1 and result2> 
     ... 
    } 
} 

として、ネストされたサブスクリプションを回避することができ、私は

observable1.concat(observable2).subscribe(result => ...) 

を試してみましたが、それは順番に、両方の観測から読み取ることが表示されます。

私はそれを行うことができますどのように

observable1<???>observable2.subscribe((result1, result2) => ...) 

の線に沿って考えていますか?

答えて

1

あなたは正しいです:concatは順番に観測値から読み込みます。 zipを使用した場合の機能が提供されなければならないように、2つのストリームは、異なるタイプのものであるという事実は、何の不都合が生じないことを

const a$ = Rx.Observable.just(1); 
const b$ = Rx.Observable.just(2); 

const combined$ = a$.zip(b$, (x, y) => ({ a: x, b: y })); 

const subscription = combined$.subscribe(x => console.log(x)); 

注:(順序位置で)それらを「参加」するには、zipを使用したいと思うでしょう2つの "zip"値から新しい値を生成します。

+0

ありがとう、それは私が探していたものです! –

関連する問題