135 votes

Quand utiliser asObservable() dans rxjs?

Je me demande qu'est-ce que l'utilisation de: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/asobservable.md

comme par docs: (Observables): observer Une séquence qui cache l'identité de la séquence source.

mais pourquoi auriez-vous besoin de cacher la séquence?

ce qui concerne

Sean

247voto

Ben Lesh Points 39290

Lorsque vous ne voulez pas de fuite de "l'observateur" du côté de l'un Subject de votre API. (En gros, pour éviter les fuites d'abstraction).

var myAPI = {
  getData: () => {
    var subject = new Subject();
    var source = new SomeWeirdDataSource();
    source.onMessage = (data) => subject.next({ type: 'message', data });
    source.onOtherMessage = (data) => subject.next({ type: 'othermessage', data });
    return subject.asObservable();
  }
};

Maintenant, quand quelqu'un obtient le résultat observable à partir d' myAPI.getData() ils ne peuvent pas next valeurs dans le résultat:

var result = myAPI.getData();
result.next('LOL hax!'); // throws an error because `next` doesn't exist

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X