gpt4 book ai didi

angular - 事件和行为主题之间的区别

转载 作者:行者123 更新时间:2023-12-04 01:59:52 25 4
gpt4 key购买 nike

Events之间有什么区别?在 ionic 3 和 BehaviorSubject在 Angular“Rxjs”中订阅事件发出,例如,“当某些事件发生时,全局发出它”?

最佳答案

要理解 BehaviorSubject,有必要花时间理解 Subjects 的工作原理以及它们与普通 Observable 的区别。

Per Ben Lesh (a major contributor on Rxjs) : “Subject 和 Observable 之间一个更重要的区别是 Subject 有状态,它保存了一个观察者列表。”

因此,Subject 保留状态。如需进一步阅读,我鼓励您 read the distinction between "Hot" observables and "Cold" observables .

BehaviorSubject 与 Subject 的不同之处在于,任何订阅它的消费者都会立即将 BehaviorSubject 的最新值发送给它。

所以,假设我们有一个应用程序有一个 BehaviorSubject 发出当前用户的用户名。假设我们的主页组件订阅了这个 BehaviorSubject。一旦该订阅被初始化(在主页中),用户名值就会被发送给它。时间流逝,仍然是同一个用户登录。说 DetailsPage 只是现在已经订阅了同一个 BehaviorSubject。用户名在此期间没有更改,但无论如何,当这个新订阅被初始化时,该值将被发出。

据我所知,事件(在 Ionic 中)用于订阅和广播全局事件。 BehaviorSubject 可以是任何范围的,通常不是全局的。

我会说主题更接近于事件。 Subject 可以有一个值推送给它(就像 Event 已经发布),它也可以像 Event 一样被订阅。

尽管如此,Subject 通常不受任何范围的限制。也就是说,它并非旨在始终在应用程序的全局范围内使用。

关于angular - 事件和行为主题之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com