角2 – 角2 – 行为主体与可观察?
我正在研究Angular 2 RxJs模式,我不明白行为主体和可观察者之间的区别。
从我的理解,行为主体是一个可以随时间变化的值(可以订阅,订阅者可以接收更新的结果)。这似乎是一个可观察的完全相同的目的。 什么时候可以使用Observable vs行为主题?在一个可观察的情况下使用行为主体是否有好处?反之亦然?
行为主体是一种主题,主题是一种特殊类型的可观察者,因此您可以像任何其他可观察者一样订阅消息。行为主体的独特特征是:
>行为主体需要一个初始值,因为它必须始终返回一个订阅值,即使它没有收到一个next() 与观察者相比,主题的独特特征是: >除了作为可观察者之外,它是一个观察者,所以你也可以发送值到主题,除了订阅。 此外,您可以使用行为主体上的asobservable()方法从行为主体获取可观察值。 可观察的是一般的,行为主体在技术上是可观察的子类型,因为行为主体是具有特定质量的可观察的。 行为主题示例: // Behavior Subject // a is a initial value. if there is a subscription // after this,it would get "a" value immediately let bSubject = new BehaviorSubject("a"); bSubject.next("b"); bSubject.subscribe((value) => { console.log("Subscription got",value); // Subscription got b,// ^ This would not happen // for a generic observable // or generic subject by default }); bSubject.next("c"); // Subscription got c bSubject.next("d"); // Subscription got d 例2与常规科目: // Regular Subject let subject = new Subject(); subject.next("b"); subject.subscribe((value) => { console.log("Subscription got",value); // Subscription wont get // anything at this point }); subject.next("c"); // Subscription got c subject.next("d"); // Subscription got d 可以使用subject.asobservable()从常规和行为主体创建可观察值。只有不同的是你不能发送值到可观察使用next()方法。 在angular2服务中,我将使用数据服务的行为主体作为角度服务,通常在组件和行为主体之前初始化,以确保消耗服务的组件接收到最后更新的数据,即使没有新的更新,因为组件订阅此数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |