Mit Rxjs 5, möchte ich eine Observable abonnieren und den Stream mit dem letzten emittierten Wert beginnen. Der Operator '.cache' soll dafür gebaut werden (denke ich), aber ich kann es nicht zum Laufen bringen. Ich habe einen kleinen Test gemacht, bei dem man ein Observable (durch Klicken auf einen Knopf) abfeuern konnte und dann 3 Sekunden später abonnieren. Theoretisch sollte ich diese Klickemission beim Abonnement bekommen, aber das tue ich nicht.rxjs5 Erhalten letzten emittierten Wert bei Abonnement
https://github.com/ReactiveX/RxJS/commit/4308a04
http://codepen.io/BradLee/pen/VaqreL
let btn = document.querySelector(`btn`),
btn$ = Rx.Observable.fromEvent(btn, `click`)
.cache(1);
setTimeout(() => {
btn$.subscribe(evt => console.log('fired'));
}, 3000);
, die ein Problem war, aber es nicht das rxjs Problem zu lösen. Wenn Sie auf die Schaltfläche klicken, bevor der 3-Sekunden-Timer ausgelöst wird, sollten Sie eine Konsolennummer erhalten, wenn der Timer ausgelöst wird, aber Sie nicht. –
Das ist das erwartete Verhalten. Sie haben das Observable noch nicht abonniert, so dass es noch keine Events erhalten kann. Ich habe das auch mit einer Lösung bearbeitet. – paulpdaniels