Voici ce que je fais maintenant pour convertir un Observable
en ReplaySubject
:
const subject = new Rx.ReplaySubject(1);
observable.subscribe(e => subject.next(e));
Est-ce la meilleure façon de faire la conversion, ou existe-t-il une manière plus idiomatique?
Vous pouvez utiliser simplement observable.subscribe(subject)
si vous souhaitez passer les 3 types de notifications, car un sujet se comporte déjà comme un observateur. Par exemple:
let subject = new ReplaySubject();
subject.subscribe(
val => console.log(val),
undefined,
() => console.log('completed')
);
Observable
.interval(500)
.take(5)
.subscribe(subject);
setTimeout(() => {
subject.next('Hello');
}, 1000)
Voir la démo en direct: https://jsbin.com/bayewo/2/edit?js,console
Cependant, cela a une conséquence importante. Puisque vous êtes déjà abonné à la source Observable, vous l'avez fait passer de "froid" à "chaud" (peut-être que cela n'a pas d'importance dans votre cas d'utilisation).