我有以下可观察的
IObservable<int> observable = Observable.Range(0, 10);
我有以下订阅
observable.Subscribe(v => Console.WriteLine("Received value: " + v));
observable.Sum().Subscribe(s => Console.WriteLine("Sum so far: " + s));
我想要的输出如下
接收值:0
到目前为止的总和: 0
接收值:1
到目前为止的总和: 1
接收值:2
到目前为止的总和: 3
。
。
但我实际得到的是收到系列最终值后的总和。
我的实际目标是将其放入拼图中,其中我有一个热的,连续运行的可观察值,给我十进制值,我必须订阅()当前的平均值和总和值。
任何这方面的帮助将不胜感激。
使用 Observable.Scan
:
var observable = Observable.Range(0, 10);
observable
.Subscribe(x => Console.WriteLine("Received value: " + x));
observable
.Scan(0, (sum, x) => sum + x)
.Subscribe(sum => Console.Writeline("Sum so far: " + sum));
Observable.Sum
只会发出一个令牌,即整个完成序列的总和。 Observable.Scan
每次从源接收令牌时都会发出令牌。