Dot-Net
關於 Rx 的 CombineLatest 和預設初始值
給定 2 種類型
A和B預設值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呼叫預設值。sa``sb``o我的第二種方法是使用
BehaviorSubjects 而不是普通Subject的 s,使用初始值創建它們,並希望 CombineLatest 將其用於其第一個輸出。謝謝閱讀。
附錄 我已經確認第二種方法有效,但我仍然不知道引入 a
BehaviorSubject而不是 plainSubject是否最適合這種情況。
怎麼用
StartWith?public static Observable<T> StartWithDefault(this Observable<T> observable) { return observable.StartWith(default(T)); }然後:
sa.StartWithDefault().CombineLatest(sb.StartWithDefault(), f)