我有两个热的整数可观察量。我想将它们两者合并为一个结果,每次通过任何一个可观察量进入新值时,它总是通知观察者新的总和。
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);
有人知道更好的方法吗?
而不是外部可观察的 Merge
和 Scan
,请使用 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