Quand utiliser asObservable () dans rxjs?

Je me demande Quelle est l'utilité de: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/asobservable.md

Selon 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?

Cordialement

Sean

33
demandé sur born2net 2016-05-02 18:52:11

1 réponses

Lorsque vous ne voulez pas laisser échapper le "côté observateur" d'un Subject de votre API. (Essentiellement pour éviter l'abstraction qui fuit).

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 de myAPI.getData(), il ne peut pas next valeurs dans le résultat:

var result = myAPI.getData();
result.next('LOL hax!'); // throws an error because `next` doesn't exist
89
répondu Ben Lesh 2016-05-02 18:20:19