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