RxJS Observable 和订阅方法
RxJS Observable and subscribe method
RxJS Observable
是否在发射后删除一个项目(到 Observer
)?
要记住 RxJS 的一个棘手方面是时间因素。默认情况下,当一个可观察对象发出一个值时,现有的观察者将收到该值。如果观察者在发出一个值后订阅了一个可观察对象,它将不会收到它,因为它是一个“迟到”的订阅者。
此外,默认情况下,一个可观察对象只能有一个订阅者。如果你想让多个订阅者订阅一个 observable,你应该使用 share()
运算符。默认情况下,主题(及其 sub-classes)可以与多个订阅者共享。即使那样,您也需要牢记时机。您必须考虑源可观察对象何时发出值,以及所有观察者何时主动订阅以接收该值。
最后,您还可以缓存发出的值,这意味着任何迟到的订阅者在订阅时仍会收到这些值。对于可观察对象,您可以使用 shareReplay(n)
,其中 n
是您要向任何新订阅者重放的值的数量。
BehaviorSubject
s 的工作方式类似,默认情况下,它会在任何观察者订阅时向其发送最后一个值。 ReplaySubject
也可以在其中传递 n
个发射值。
RxJS Observable
是否在发射后删除一个项目(到 Observer
)?
要记住 RxJS 的一个棘手方面是时间因素。默认情况下,当一个可观察对象发出一个值时,现有的观察者将收到该值。如果观察者在发出一个值后订阅了一个可观察对象,它将不会收到它,因为它是一个“迟到”的订阅者。
此外,默认情况下,一个可观察对象只能有一个订阅者。如果你想让多个订阅者订阅一个 observable,你应该使用 share()
运算符。默认情况下,主题(及其 sub-classes)可以与多个订阅者共享。即使那样,您也需要牢记时机。您必须考虑源可观察对象何时发出值,以及所有观察者何时主动订阅以接收该值。
最后,您还可以缓存发出的值,这意味着任何迟到的订阅者在订阅时仍会收到这些值。对于可观察对象,您可以使用 shareReplay(n)
,其中 n
是您要向任何新订阅者重放的值的数量。
BehaviorSubject
s 的工作方式类似,默认情况下,它会在任何观察者订阅时向其发送最后一个值。 ReplaySubject
也可以在其中传递 n
个发射值。