使用rxjs5获取BehaviorSubject的当前值的简单方法

Cle*_*ent 31 javascript reactive-programming rxjs behaviorsubject rxjs5

以前在rxjs4中,BehaviorSubject中有一个名为: getValue()(doc here)的方法.

rxjs5中不再存在此方法.

所以我发现获得BehaviorSubject值的唯一解决方案是:

let value;
myBehaviorSubject.take(1).subscribe( (e) => value = e );
Run Code Online (Sandbox Code Playgroud)

这段代码同步运行(我不完全理解为什么,但确实......)并获得了价值.它有效,但它不像getValue()现有的那样干净:

let value = myBehaviorSubject.getValue();
Run Code Online (Sandbox Code Playgroud)

为什么getValue()rxjs5中删除了这个问题最干净的解决方案是什么?

Tys*_*alp 56

正如artur grzesiak评论中所指出的那样,BehaviorSubject界面被清理干净,而吸气剂现在只是.value.

我只想添加这个作为答案,因为我几乎没有阅读原始问题的评论,并且会错过正确的答案.

  • 该评论链接到有关的重大更改,它与行为主题无关。 (6认同)
  • 从 RxJS 6.5.4 开始(并期待 7.x),**BehaviorSubjects** 将支持 `.value` 和 `.getValue()` 作为访问当前值 https://github 的方式。 com/ReactiveX/rxjs/blob/6.x/src/internal/BehaviorSubject.ts (6认同)
  • 在我看来,如果有人不理解答案是如何工作的,那就是Artur而不是Tyson (4认同)
  • “*我只是想将其添加为答案,因为我几乎没有阅读原始问题的评论,并且会错过正确的答案。*”如果担心您重复了评论并且[它不是“你的”答案](https://meta.stackoverflow.com/a/343089/1028230),你总是可以[社区维基它](https://meta.stackexchange.com/a/11741/184684)(虽然在 31 票时,我理解利他主义是否减弱)。 (3认同)

Adr*_*and 7

查看行为主题的源代码

https://github.com/ReactiveX/rxjs/blob/master/src/internal/BehaviorSubject.ts

它仍然有一个 getValue 方法,它有一个只调用 getValue 的 value 属性,它在 RxJs5 中就有。

这是一个使用 RxJs5 的 StackBlitz。

https://stackblitz.com/edit/typescript-gcbif4

所有关于 6.5.0 中重大更改的评论都链接到关于可观察对象的评论,而不是行为主题。