12

在创建 RxJS 时BehaviorSubject,它会一直保持 aBehaviorSubject直到它被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 并获取传递给它的一个值。

4

1 回答 1

8

这是由于lift调用而发生的Subject

让我们更深入地看看你的例子:

  1. 您正在实例化 a BehaviorSubjectwhich extends Subject
  2. 您正在调用内部调用 操作pluck员的操作员map
  3. map操作员在内部调用which 委托给which 然后返回一个liftBehaviorSubjectSubjectAnonymousSubject
于 2020-01-10T09:09:45.767 回答