Angular 2服务中的Observables与变量
我有一个关于在Angular 2服务中使用Observables与变量的问题.前者似乎是首选方式,但我无法确切地找出原因.
给出如下样本服务: @Injectable() export class TestService { // Method 1 public data = {x: Math.random(),y: Math.random()}; // Method 2 private _data$:BehaviorSubject<any> = new BehaviorSubject({x: Math.random(),y: Math.random()}); public data$:Observable<any> = this._data$.asObservable(); constructor() { setInterval(() => { this.data = {x: Math.random(),y: Math.random()}; this._data$.next({x: Math.random(),y: Math.random()}); },500); } } 我已经看到了两种消耗组件数据的方法.只是直接使用变量: <pre>{{testService.data | json}}</pre> 并使用Observable: <pre>{{(testService.data | async) | json}}</pre> 两者似乎都有效,那么使用更精细的基于Observable的方法有什么优势呢? Plunker:https://plnkr.co/edit/1qVDSZwq2NVgZsWFPnii?p=preview 解决方法
Observable将值更改推送到订阅更改的组件和服务.
变量需要轮询,因此它具有巨大的性能优势. 特别是如果存在计时问题,例如组件需要来自服务从服务器获取的服务的值. 使用可观察的组件只需订阅并在值到达时调用. 角度变化检测直接支持可观察量. 可观测量有其他好处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |