首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BehaviorSubject映射BehaviorSubject

BehaviorSubject映射BehaviorSubject
EN

Stack Overflow用户
提问于 2018-07-09 18:20:11
回答 1查看 3.9K关注 0票数 8

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

代码语言:javascript
复制
  const source$ = new BehaviorSubject(someValue);
  const subSource$ = source$.pipe(map(transform));

我希望subSource$也是一个BehaviorSubject,但不是,我怎么才能让subSource$是一个BehaviorSubject呢?

EN

回答 1

Stack Overflow用户

发布于 2018-12-13 21:22:23

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

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

代码语言:javascript
复制
const source$ = new BehaviorSubject(value);
const published$ = new BehaviorSubject(value);
const subSource$ = source$.pipe(...operators, multicast(published$));

然后,您可以在已发布的$上调用getValue(),以便在它传递给您的运算符之后检索值。

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

也就是说,这并不是最具rxjs风格的方式。所以,除非你有一个特定的原因,在它通过你的运算符之后动态地取回值,而不是仅仅在流中订阅它,也许你会重新考虑这种方法?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51243204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档