【发布时间】:2018-10-04 05:04:58
【问题描述】:
在创建 RxJS BehaviorSubject 时,它会一直保持为 BehaviorSubject,直到它变为 pipe'd。只要返回 pipe'd 版本,它就会变成 AnonymousSubject。
示例:
// Instance of `BehaviorSubject`
const behaviorSubject$ = new BehaviorSubject({ someValue: null })
// Suddenly becomes an Anonymous Subject
const anonymousSubject$ = (
behaviorSubject$
.pipe(
pluck('someValue')
)
)
// Also suddenly becomes an Anonymous Subject
const anonymousSubject$ = (
new BehaviorSubject({ someValue: null })
.pipe(
pluck('someValue')
)
)
ReplaySubject 也遇到了同样的问题。我似乎无法通过主题管道并返回该主题。它始终转换为AnonymousSubject。我认为我在这里寻找的是类似于 Promise 的行为,我可以从任何地方订阅这个 observable 并获取传递给它的一个值。
【问题讨论】:
-
你有关心的代码吗?如果你这样做,你不应该这样做。
-
我需要做
behaviorSubject$.value。我应该改用ReplaySubject吗? -
你需要传递一个参数给 BehaviorSubject()
-
IMO 使用
value是一种代码味道,即使lift返回了BehaviorSubject,如果解除的主题是,你会期望value是什么?原始价值还是采摘价值?我认为你应该认真重新考虑使用value。 -
BehaviorSubject允许你做subject.value。AnonymousSubject做不到。
标签: javascript rxjs rxjs5 behaviorsubject subject-observer