我正在尝试从内部使用 Rx.Subject 的函数返回一个可观察对象。当然,与任何好的 API 一样,实现细节应该完全从消费者那里抽象出来。但是,使用 Subject.asObservable() 似乎任何消费者都可以向所有观察者发出新值。
例子:
const subject = new Rx.Subject();
const observable = subject.asObservable();
observable.source === subject; // true
observable.forEach(value => console.log(value));
observable.source.next('Hello');
// Causes the forEach above to print "Hello"
所以我的问题是,有没有一种内置的方法可以将 Observable 暴露给消费者而不让他们访问原始主题?如果不是,这显然是 RxJs 的糟糕设计。
注意:这是针对 RxJS v5