gpt4 book ai didi

.net - 关于Rx的CombineLatest和默认初始值

转载 作者:行者123 更新时间:2023-12-04 13:16:05 26 4
gpt4 key购买 nike

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

let sa = new Subject<A>()
let sb = new Subject<B>()

以及 f 类型的函数 A -> B -> C
我创建了这个可观察对象:
let o = Observable.CombineLatest(sa, sb, f)

但是,我需要 o 来生成基于 d(A)d(B) 的初始值。文档说,只有当两个主题都产生第一个输出时,CombineLatest 才会产生它的第一个输出。

我有 2 种方法,但我不知道哪种方法可行/哪种方法最好,或者我是否缺少一些已经满足我需要的操作符。

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

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

谢谢阅读。

附录
我已经确认第二种方法有效,但我仍然不知道引入 BehaviorSubject 而不是普通的 Subject 是否最适合这种情况。

最佳答案

如何使用StartWith呢?

public static Observable<T> StartWithDefault(this Observable<T> observable) {
return observable.StartWith(default(T));
}

然后:
sa.StartWithDefault().CombineLatest(sb.StartWithDefault(), f)

关于.net - 关于Rx的CombineLatest和默认初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com