繁体   English   中英

如何使用 Observable 订阅行为主体

[英]How to Subscribe a Behavior Subject with an Observable

我有一个场景,我想在用户单击时获取 Observable 变量的当前值,这是一个商店选择器。 根据此问题的已接受问题,我必须使用行为主题。 但是我从 Store 选择器中获得了 ab Observable 值。

现在,问题是如何将该 Observable 值分配给 Behavior Subject 以在 App 中随时使用 Behavior Subject 的当前值。

当您想要获得该行为时,您应该使用您拥有的 observable 并分享它 + 重播最后一个值。 好消息是,有一个操作符: shareReplay

重要提示:定义 shareReplay 的参数,否则你将重播无限数量的值,如果没有人再听可观察的......它仍然会保持打开状态!

因此,请执行以下操作:

const replayedObs$ = originalObs$.pipe(
  shareReplay({ bufferSize: 1, refCount: true })
)

这样你只会在订阅时获得最新的值,如果没有人再听replayedObs$它将被关闭。

您需要订阅才能获得价值,否则您只会获得一个Observable

下面是一个例子:

subject: BehaviorSubject<any> = new BehaviorSubject('initial value'); 

  showVal()
  {
    this.subject.subscribe(x => this.val = x);
  }

是一个 StackBlitz 演示。

您的问题的解决方案是这样的:

const observable = of(true);
const behaviorSubject = new BehaviorSubject(false);

observable.subscribe(res => behaviorSubject.next(res));

console.log(behaviorSubject.value);

https://stackblitz.com/edit/rxjs-xd4mpp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM