C# 当下一个可用时停止可观察的
我有以下几件事:C# 当下一个可用时停止可观察的,c#,system.reactive,C#,System.reactive,我有以下几件事: IObservable<A> as_; Func<A, IObservable<B>> getbs; i可视为; Func-getbs; getbs是一个返回Bs的infinte可观测值的函数 我想获得一个IObservable,一旦as中的下一个A可用,它就会“切换”到下一个IObservable 像as_uu.SelectMany(getbs)这样的东西是行不通的,因为它会从第一个A开始不断地得到Bs,因为序列永远不会自然终止。Sel
IObservable<A> as_;
Func<A, IObservable<B>> getbs;
i可视为;
Func-getbs;
getbs
是一个返回B
s的infinte可观测值的函数
我想获得一个IObservable
,一旦as中的下一个A
可用,它就会“切换”到下一个IObservable
像as_uu.SelectMany(getbs)这样的东西是行不通的,因为它会从第一个
A
开始不断地得到B
s,因为序列永远不会自然终止。SelectMany
就像是一个Select
然后是一个Merge
。然后,您需要在功能中使用选择
IObservable a=Observable.Generate(0,=>true,i=>i+1,i=>i,=>TimeSpan.FromSeconds(1));
Func selector=i=>Observable.Generate(1,=>true,j=>j+1,j=>$“{i}x{j}”,_=>TimeSpan.frommilluses(50));
a、 选择(选择器).Switch().Subscribe(s=>Console.WriteLine);
其他语言rx实现有一个名为FlatMapLatest的函数。我想知道为什么.net版本中没有它。发布有效的C#.Fixed@Enigmativity会非常有帮助
IObservable<int> a = Observable.Generate(0, _ => true, i => i + 1, i => i, _ => TimeSpan.FromSeconds(1));
Func<int, IObservable<string>> selector = i => Observable.Generate(1, _ => true, j => j + 1, j => $"{i} x {j}", _ => TimeSpan.FromMilliseconds(50));
a.Select(selector).Switch().Subscribe(s => Console.WriteLine(s));