关于 Rx 的组合最新和默认初始值



给定两种类型AB,默认值为d(A) &d(B)。2受试者:

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

和类型为A -> B -> C的函数f

我创建了这个observable:

let o = Observable.CombineLatest(sa, sb, f)

然而,我需要o基于d(A) &d(B)。文档说,只有当两个主题都产生了第一个输出时,combinellatest才会产生它的第一个输出。

我有两种方法,但我不知道哪一种行得通/哪一种是最好的,或者如果我错过了一些已经做了我需要的操作符。

我想到的第一种方法是在o的相关订阅完成后,用默认值手动调用OnNextsasb

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

感谢您的阅读。

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

使用StartWith如何?

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

:

sa.StartWithDefault().CombineLatest(sb.StartWithDefault(), f)

相关内容

  • 没有找到相关文章

最新更新