当你不想泄漏Subject
的“观察者”时,你的API。 (基本上是为了防止漏洞抽象)。
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();
}
};
现在当有人从myAPI.getData()
获得可观察的结果时,他们不能将next
值输入到结果中:
var result = myAPI.getData();
result.next('LOL hax!'); // throws an error because `next` doesn't exist