我有以下可观察的
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
…
…
但是我实际上得到的是获得该序列的最终值后的总和.
我的实际目标是将其放入难题中,在该难题中,我有一个连续不断地运行的可观察值,它为我提供了十进制值,我必须对当前的平均值和总和值进行subscribe().
任何帮助,将不胜感激.
解决方法:
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每次从源接收到令牌时都会发出令牌.