gpt4 book ai didi

rxjs - BehaviorSubject 映射一个 BehaviorSubject

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

我有一个 rxjs@6 BehaviorSubject source$ ,我想从 source$ 获取子值

  const source$ = new BehaviorSubject(someValue);
const subSource$ = source$.pipe(map(transform));

我期待 subSource$也是一个 BehaviorSubject,但不是,我怎样才能得到 subSource$是 BehaviorSubject 吗?

最佳答案

当 BehaviorSubject 被管道传输时,它使用 AnonymousSubject,就像普通的 Subject 一样。因此,调用 getValue() 的能力不会沿链向下传递。这是社区的决定。我同意(和其他一些人一样)如果存在管道后获取值的能力会很好,但遗憾的是不支持。

因此,您需要执行以下操作:

const source$ = new BehaviorSubject(value);
const published$ = new BehaviorSubject(value);
const subSource$ = source$.pipe(...operators, multicast(published$));


然后,您可以在published$ 上调用getValue() 以在值通过您的运算符后检索该值。

请注意,您需要在 subSource$ 上调用 connect()(这将使其成为“热门”可观察对象)或使用 refCount()。

也就是说,这并不是最 rxjs-ish 的做事方式。因此,除非您有特定原因在值通过您的操作符后动态检索该值而不是仅在流中订阅它,否则可能会重新考虑该方法?

关于rxjs - BehaviorSubject 映射一个 BehaviorSubject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243204/

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