以前在 rxjs4 中,在BehaviorSubject中有一个方法叫做:
getValue()
(doc here)。
此方法在 rxjs5 中不再存在。
因此,我发现获得BehaviorSubject值的唯一解决方案是:
let value;
myBehaviorSubject.take(1).subscribe( (e) => value = e );
此代码同步运行(我不完全理解为什么,但它确实...)并获取值。它有效,但如果getValue()
存在,它就不会那么干净:
let value = myBehaviorSubject.getValue();
为什么在 rxjs5 中删除了getValue()
,这个问题的最简洁解决方案是什么?
答案 0 :(得分:48)
正如artur grzesiak
在评论中指出的那样,BehaviorSubject
界面已被清理,而获取者现在只是.value
。
我只想将此作为答案添加,因为我几乎没有阅读原始问题的评论,并且错过了正确答案。
答案 1 :(得分:1)
查看行为主体的源代码
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中重大变化的评论都链接到有关具有非行为主体的可观察对象的评论。