2 Arten A
und B
mit Standardwerten d(A)
& d(B)
gegeben. und 2 Themen:über Rx CombineLatest und Standardanfangswert
let sa = new Subject<A>()
let sb = new Subject<B>()
Und eine Funktion f
vom Typ A -> B -> C
ich diese beobachtbaren erstellt:
let o = Observable.CombineLatest(sa, sb, f)
Ich brauche aber o
einen Anfangswert auf den d(A)
& Basis zu produzieren d(B)
. Die Dokumentation sagt, dass CombineLatest erst dann seine erste Ausgabe produzieren wird, wenn beide Subjekte ihre erste Ausgabe produziert haben.
Ich habe 2 Ansätze, aber ich weiß nicht, welche funktionieren wird/welche ist die beste oder wenn ich einen Operator vermisse, der bereits tut, was ich brauche.
Der erste Ansatz kam ich manuell OnNext
zu sa
und sb
mit den Standardwerten aufzurufen, nachdem die relevanten Beiträge zu o
vorgenommen wurden.
Mein zweiter Ansatz ist es, BehaviorSubject
s anstelle von einfach Subject
s zu verwenden, sie mit den Anfangswerten zu erstellen und hoffe, dass CombineLatest das für seine erste Ausgabe verwenden wird.
Danke fürs Lesen.
Nachtrag Ich habe bestätigt, dass der zweite Ansatz funktioniert, aber ich weiß nicht, noch eine BehaviorSubject
statt einer einfachen Subject
ist die beste für diesen Fall, wenn die Einführung.
Es gibt tatsächlich einen '.StartWith' Betrieb besonders für diesen Fall. –
@FyodorSoikin Noch besser. –
Thx. Wie schwer wäre es gewesen, das hier zu erwähnen, wenn man genau über dieses Problem spricht! https://www.learnrxjs.io/operators/combination/combinelatest.html –