2017-01-18 10 views
-1

getLastOrder()getUserDetails(lastOrder.owner)の非同期操作があります。 (両方とも返品ObservableRxJSトリッキージップ2オブザーバブル

ファンシーオペレーターが両方を含む組み合わせの結果を得ることを探しています:[lastOrder, userDetails]この注文を所有しています。

P.S.テンポラリ変数を使ってそれを行うのはきれいに見えません

+0

操作の意味を広げることはできますか? 'A'は' Observable'を返す関数ではなく、 'Observable'を変換する' B'関数ですか? –

+0

実際に達成しようとしていることのあまり抽象的な例はありませんか? – jonrsharpe

+0

申し訳ありませんが、編集した質問は完全です。 – Nikita

答えて

1

ファンシーな演算子についてはわかりませんが、これは演算子flatMapmapを組み合わせることで簡単に解決できます。また、私の機能だけでダミーデータを返すが、任意の観測と同じように動作しなければならないことに注意してください:あなたがprettynessについて考えるとき

function getLastOrder() { 
    return Rx.Observable.of({owner: 'foo'}) 
} 

function getUserDetails(owner) { 
    return Rx.Observable.of({details: 'bar', owner}) 
} 

function combined() { 
    return getLastOrder() 
    .flatMap(order => getUserDetails(order.owner).map(details => [order, details])) 
} 

、また、それを読み込みます隣の男を考えます。

+1

ヒント: '.flatmap(x => doIt(x).map(y => [x、y])'と書くと、[resultSelector](http://reactivex.io/rxjs/) (x、y)=> [x、y]) 'ボーナスとしてあなたも追加しました。 'x'と' y'のインデックスにアクセスする –

関連する問題