为什么管道 BehaviorSubject 在 RxJS 中创建一个 AnonymousSubject?
Why does piping a BehaviorSubject create an AnonymousSubject in RxJS?
在创建 RxJS BehaviorSubject
时,它会保持 BehaviorSubject
直到 pipe
。一旦 pipe
的版本被 return 编辑,它就会变成 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
时也遇到了同样的问题。我似乎无法通过主题和 return 返回该主题。它总是转换为 AnonymousSubject
。我想我在这里寻找的是类似 Promise 的行为,我可以从任何地方订阅这个 observable 并获取传递给它的一个值。
发生这种情况是由于 called on Subject
。
让我们更深入地了解您的示例:
- 您正在实例化
BehaviorSubject
扩展
Subject
- 您正在调用 internally 调用的
pluck
操作员
map
运算符
map
operator internally 在 BehaviorSubject
上调用 lift
委托给 Subject
然后 returns 一个 AnonymousSubject
在创建 RxJS BehaviorSubject
时,它会保持 BehaviorSubject
直到 pipe
。一旦 pipe
的版本被 return 编辑,它就会变成 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
时也遇到了同样的问题。我似乎无法通过主题和 return 返回该主题。它总是转换为 AnonymousSubject
。我想我在这里寻找的是类似 Promise 的行为,我可以从任何地方订阅这个 observable 并获取传递给它的一个值。
发生这种情况是由于 Subject
。
让我们更深入地了解您的示例:
- 您正在实例化
BehaviorSubject
扩展Subject
- 您正在调用 internally 调用的
pluck
操作员map
运算符 map
operator internally 在BehaviorSubject
上调用lift
委托给Subject
然后 returns 一个AnonymousSubject