Unten ist ein Ausschnitt, der beschreibt, was ich versuche zu tun. In meiner Anwendung habe ich ein Replay-Objekt, das überall verwendet wird. An einem bestimmten Punkt möchte ich den letzten vom Objekt ausgegebenen Wert erhalten, aber last
scheint auf einem ReplaySubject nicht zu funktionieren.Wie bekomme ich den letzten Wert von einem ReplaySubject?
const subject = new Rx.ReplaySubject();
subject.next(1);
subject.next(2);
subject.next(3);
subject.next(4);
subject.subscribe(num => console.log(num));
var lastObserver = subject.last();
lastObserver.subscribe(num => console.log('last: ' + num));
Der obige Code Feuer nichts für die lastObserver
, aber funktioniert gut abonnieren.
Also wenn ich vervollständige keine anderen Abonnenten erhalten Updates? – Smeegs
Das stimmt. Wenn Sie neue Abonnenten benötigen, um die letzte Emission zu erhalten, sobald sie sich angemeldet haben, ziehen Sie 'ReplaySubject' +' last' zurück und verwenden Sie stattdessen einfach ein 'BehaviorSubject'. – xtianjohns
Ich bin überzeugt, dass ich das falsche Thema benutze, aber ich bin mir nicht sicher, dass das das richtige ist. Lassen Sie mich die Situation erklären. Dies ist ein Betreff, der das Ergebnis eines api-Anrufs ausgibt. Zum größten Teil wollen Abonnenten die nächste nicht die letzte ausstrahlen. Es gibt jedoch eine Situation, in der ich sehen möchte, was die letzte emittiert hat. – Smeegs