2016-07-15 19 views
0

Ich verwende rxjs in einem Projekt, das Problem, das ich gegenüberstelle, ist, dass sowohl myBehaviorSubject.value als auch myBehaviorSubject.getValue() das letzte Element zurückgibt, das durch Referenz in die Observable geschoben wird. Kann ich den letzten Gegenstand irgendwie nach Wert bekommen?Wie wird das letzte Objekt nach Wert an ein RxJs/BehaviorSubject übergeben?

Hinweis: Ich weiß, dass ich das Objekt mit Object.assign kopieren kann, aber das scheint mir ein Standardcode zu sein. Ich bin auf der Suche nach einer offiziellen Methode oder einem Code, der diese Funktionalität unterstützt. Also, was ich tun möchte, ist etwas wie myBehaviorSubject.getValueByValue() (klingt seltsam, ich weiß.)

+3

Ich bezweifle, dass es sowas schon in rx gibt. Aber Sie können 'BehaviorSubject' immer erweitern oder sogar seinen Prototyp monkeypatch. 'BehaviourSubject.prototype.cloneValue = function() { return Object.assign ({}, this.getValue()) }' http://plnkr.co/edit/dTUjGi6TAfJtk36Qvqo0?p=preview –

+0

Wie könnte es gebaut werden in funktionalität dafür? Willst du eine flache Kopie? Oder tiefe Kopie? Irgendwas dazwischen? Hat Ihr Objekt zirkuläre Referenzen? Es gibt zu viele Variationen. – Brandon

Antwort

0

Nein, es gibt nichts in RXJS, die dies tut, und das ist nicht wirklich in der Rx-Domäne. Während Observables am besten funktionieren, wenn sie mit unveränderlichen Typen verwendet werden, bietet rxjs keine Funktionen in diesem Bereich. Zum einfachen Klonen von Objekten können Sie, wie Sie vorschlagen, etwas wie Object.assign verwenden. Für Sammlungen empfehle ich immutable.js. Sie können (wie in den Kommentaren vorgeschlagen) auch BehaviorSubject erweitern, um die von Ihnen bevorzugte Implementierung einzuschließen.

Verwandte Themen