[译] 认识 rxjs 中的 BehaviorSubject、ReplaySubject 以及 AsyncSubject

原文链接:Understanding rxjs BehaviorSubject, ReplaySubject and AsyncSubject
原文作者:Luuk Gruijs;发表于2018年5月4日
译者:yk;如需转载,请注明出处,谢谢合作!

Subject 的作用是实现 Observable 的多播。由于其 Observable execution 是在多个订阅者之间共享的,所以它可以确保每个订阅者接收到的数据绝对相等。不仅使用 Subject 可以实现多播,RxJS 还提供了一些 Subject 的变体以应对不同场景,那就是:BehaviorSubject、ReplaySubject 以及 AsyncSubject。

如果你还不知道 Subject(主题)是什么的话,建议先读读我的上一篇文章:认识 rxjs 中的 Subject。如果你觉得 OK 没问题,那咱继续!

摄影:Cory Schadt,来自 Unsplash

BehaviorSubject

BehaviorSubject 是 Subject 的变体之一。BehaviorSubject 的特性就是它会存储“当前”的值。这意味着你始终可以直接拿到 BehaviorSubject 最后一次发出的值。

有两种方法可以拿到 BehaviorSubject “当前”的值:访问其 .value 属性或者直接订阅。如果你选择了订阅,那么 BehaviorSubject 将直接给订阅者发送当前存储的值,无论这个值有多么“久远”。请看下面的例子:

import * as Rx from "rxjs"

你可能感兴趣的:(javascript,ViewUI)