2016-05-31 17 views
2

は、以下の2つの観測組み合わせる必要がある:条件付きで組み合わせる2つの観測

  • observable1{ x: value1 }
  • observable2発する発するを発するobservable3{ y: value2 }

  • 火災(value2observable2によって放出された最後の値である)すなわち
  • { y: value }
  • observable2火災

は、それがobservable1放出しobservable2発するため等mergeためcombineLatestように振る舞うべき。

これを行うにはエレガントな方法がありますか?

+4

'Rx.Observable.merge(observable1.withLatestFrom(observable2)、observable2)'? – user3743222

+0

独自の演算子を実装できます。 – sielakos

+0

@ user3743222ありがとうございました!それはかなり単純です。これを回答として投稿すると、私はそれを受け入れます。 –

答えて

3

あなたは行うことができます:それは値を生成するためにobservable2を待ってしまうようcombineLatestが、ここでは動作しないだろうと

observable3 = Rx.Observable.merge(observable1.withLatestFrom(observable2), observable2) 

注意を。 withLatestFromは、待つことなくobservable2から最新の値になります。

Iまた、エッジケースをテストすることをお勧めいたします

  • observable2は、(それが文書から明らかではない、withLatestFromがブロックして待つかもしれません)まだ値が放射されていない
  • observable2が前に完了しましたあなたの作成にobservable3
関連する問題