Mat*_*ace 1 .net c# system.reactive
根据MSDN文档,以下代码应输出"5"到控制台窗口.相反,没有显示任何内容.
static void Main(string[] args)
{
var o = new ReplaySubject<int>();
o.OnNext(0);
o.OnNext(1);
o.OnNext(2);
o.OnNext(3);
o.OnNext(4);
o.OnNext(5);
o.TakeLast(1).Subscribe(Console.WriteLine);
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
5
Press any key to exit
Run Code Online (Sandbox Code Playgroud)
实际产量:
Press any key to exit
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?
那是因为您从未通知序列的完成,因此TakeLast
不知道序列是否完整并继续等待序列的结束.这按预期工作:
var o = new ReplaySubject<int>();
o.OnNext(0);
o.OnNext(1);
o.OnNext(2);
o.OnNext(3);
o.OnNext(4);
o.OnNext(5);
o.OnCompleted();
o.TakeLast(1).Subscribe(Console.WriteLine);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
309 次 |
最近记录: |