Опубликовать последнее значение наблюдаемой

У меня есть горячая наблюдаемая (субъект в данном случае):

var subject = new Rx.Subject();

Я хочу создать еще одну наблюдаемую, чтобы каждая когда делается новая подписка, немедленно срабатывает последнее созданное значение.

Итак, в псевдокоде:

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
});

Это примерно то, что я хочу, и, похоже, это работает. Однако я предполагаю, что должен быть какой-то встроенный механизм для достижения того же

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;
    });
};
22
задан Gajus 3 August 2015 в 06:22
поделиться