私のシステムでは、ソース、ソースを新しい値にマップする 2 つの「ステップ」、およびそれらの 2 つのステップを組み合わせて最終的な値を作成する合計があります。このシステムの最初の実行は期待どおりに機能し、単一の合計 3 が生成されました。
var source = new Rx.BehaviorSubject(0);
var stepOne = source.map(function (value) {
return value + 1;
});
var stepTwo = source.map(function (value) {
return value + 2;
});
var sum = Rx.Observable.combineLatest(
stepOne,
stepTwo,
function (s1, s2) {
console.log('calc sum: ' + (s1 + s2));
return s1 + s2;
}).subscribe(function (sum) {
});
出力:
> calc sum: 3
しかし、次に source に新しい値を入力すると、次のような 2 つの結果が得られます。
source.onNext(1);
> calc sum: 4
> calc sum: 5
1 つ目は中間結果です。新しいソース値がシステムの一部を通過し、すべての値の伝播が完了すると最終結果が得られます。
私の質問は、ソースにプッシュされた新しい値がシステムをアトミックに通過し、1 つの合計結果のみを生成するように構成するための推奨される方法は何ですか?
ありがとう!