何时在rxjs中使用asObservable()?

问题描述 投票:45回答:1

我想知道asObservable的用途是什么:

根据文档:

可观察的序列,隐藏源序列的身份。

但为什么你需要隐藏序列?

rxjs rxjs5
1个回答
121
投票

当你不想泄漏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
© www.soinside.com 2019 - 2024. All rights reserved.