Veröffentlichen Sie den letzten Wert einer Observablen

Habe ich eine heiße beobachtbar ist (ein Thema, in diesem Fall):

var subject = new Rx.Subject();

Ich möchte erstellen Sie eine weitere beobachten, dass jedes mal, wenn eine neue Abonnements wird sofort feuert aus den letzten Wert, der produziert wurde.

Also in pseudo-code:

var myObservableWithLastValue = subject.publishLast();

subject.onNext(3);

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 3
});

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 3, too
});

subject.onNext(4);

myObservableWithLastValue.subscribe(function(x){
    console.log(x); //should write 4
});

Dies ist ungefähr das, was ich will und es scheint zu funktionieren. Aber ich denke, es muss einen eingebauten Mechanismus, um das gleiche zu erreichen

Rx.Observable.prototype.keepLatest = function () {
    var latestValue;

    var disposable = this.subscribe(function (value) {
        latestValue = value;
    });

    return Rx.Observable.create(function (observer) {
        observer.onNext(latestValue);
        return disposable.dispose;
    });
};

InformationsquelleAutor der Frage Christoph | 2012-03-16

Schreibe einen Kommentar