Wenn ich eine gemeinsame Zuordnung von BehaviorSubject
instance (t
) abonniere, wird nur die erste Subskription ausgeführt.Die zweite Subskription für eine gemeinsame Zuordnung von BehaviorSubject wird nicht ausgeführt.
Wenn das Original BehaviorSubject
(obj
) einen zweiten Wert ausgibt, wird nur der letzte Wert gedruckt, und beide Abonnements wurden ausgeführt.
mein Code
const obj = new Rx.BehaviorSubject(1)
obj.subscribe(console.log)
const t = obj.map(u => {
console.log("mapped")
return u * 10
}).share()
t.subscribe(x => console.log("subscribe 1 " + x))
t.subscribe(x => console.log("subscribe 2 " + x))
//with the following line un-commented, both subscriptions print out new value
//obj.next(2)
Mein erwartetes Ergebnis ist
1
mapped
subscribe 1 10
subscribe 2 10
aber das tatsächliche Ergebnis war
1
mapped
subscribe 1 10
Sorry für die naive Frage Let überprüfen. Kann mir das jemand erklären?
Vielen Dank
Wissen Sie, wie Sie ein 'BehaviorSubject' einem anderen' BehaviorSubject' zuordnen. Ich möchte die Logik in 'map' nicht bei jedem Abonnement wiederholen, sondern muss diese Logik nur dann ausführen, wenn die ursprüngliche' BehaviorSubject' -Instanz ('obj') einen neuen Wert ausgibt. Mit anderen Worten, ich möchte, dass etwas das Ergebnis als * erwartetes Ergebnis * in meiner Frage ausgibt. – transang
Ich denke, dass ich meine Antwort aus @olsns Antwort bekommen habe. Vielen Dank – transang