0

我有两个整数的热可观察量。我想将它们两者结合到一个结果中,每当一个新值通过任一可观察值进入时,它总是用新的总和通知观察者。

Suppose observable1 goes as follows  ....., 3, 5, 9, 10, 16 -->
observable 2 goes like this .............., 1, 3, 2 --->

我希望结果一个以一种将所有内容添加到通过 1 的总和并减去通过 2 的所有内容的方式保持一个总和,因此在上面的示例中,结果一个会像这样

..........................................37, 38, 35, 38, 33, 35, 26, 16 --->

我正在考虑通过以下方式进行

var result = Observable.Merge(observable1.Scan((p, n) => p + n), 
                             .observable2.Scan((p, n) => p - n)))
                             .Scan((p, n) => p + n);

有人知道更好的方法吗?

4

1 回答 1

2

代替MergeandScan对于外部 observable,使用CombineLatest

var result = Observable
    .CombineLatest(
        obs1.Scan(0, (sum, n) => sum + n).StartWith(0), // running sum of first observable
        obs2.Scan(0, (sum, n) => sum + n).StartWith(0), // running sum of second observable
        (sum1, sum2) => sum2 - sum1); // running difference of the 2 sums
于 2013-09-12T16:44:21.263 回答