Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 关于Rx';s组合测试和默认初始值_.net_F#_System.reactive - Fatal编程技术网

.net 关于Rx';s组合测试和默认初始值

.net 关于Rx';s组合测试和默认初始值,.net,f#,system.reactive,.net,F#,System.reactive,给定两种类型的A和B,默认值为d(A)和d(B)。 和2个科目: let sa = new Subject<A>() let sb = new Subject<B>() 但是,我需要o根据d(A)和d(B)生成初始值。文档说,CombineTest只会在两个主题都产生第一个输出后才产生第一个输出 我有两种方法,但我不知道哪种方法有效/哪种方法最好,或者我是否缺少一些已经完成我需要的操作的操作员 我想到的第一种方法是在对o进行相关订阅后,使用默认值手动调用OnNext到s

给定两种类型的
A
B
,默认值为
d(A)
d(B)
。 和2个科目:

let sa = new Subject<A>()
let sb = new Subject<B>()
但是,我需要
o
根据
d(A)
d(B)
生成初始值。文档说,CombineTest只会在两个主题都产生第一个输出后才产生第一个输出

我有两种方法,但我不知道哪种方法有效/哪种方法最好,或者我是否缺少一些已经完成我需要的操作的操作员

我想到的第一种方法是在对
o
进行相关订阅后,使用默认值手动调用
OnNext
sa
sb

我的第二种方法是使用
BehaviorSubject
s而不是普通的
Subject
s,用初始值创建它们,并希望CombineTest将其用于第一次输出

谢谢你的阅读

附录
我已经证实了第二种方法是有效的,但我仍然不知道引入
行为主体
而不是简单的
主体
是否最适合这种情况。

使用
StartWith
如何

publicstaticobservestartwithdefault(此可观察){
返回可观察的。StartWith(默认值(T));
}
然后:


实际上有一个
.StartWith
操作,特别是在这种情况下。@FyodorSoikin甚至更好。Thx。当我们谈论这个问题时,在这里提到这一点是多么困难啊!为了“好玩”,这里是
StartWith
操作符的源代码:
let o = Observable.CombineLatest(sa, sb, f)
sa.StartWithDefault().CombineLatest(sb.StartWithDefault(), f)