У меня есть горячая наблюдаемая (субъект в данном случае):
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;
});
};