60

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

rxjs5中不再存在此方法。

因此,我发现获得 BehaviorSubject 值的唯一解决方案是:

let value;
myBehaviorSubject.take(1).subscribe( (e) => value = e );

此代码同步运行(我不完全理解为什么,但确实如此......)并获取值。它可以工作,但它不如getValue()存在时那么干净:

let value = myBehaviorSubject.getValue();

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

4

2 回答 2

88

artur grzesiak正如评论中指出的那样,BehaviorSubject界面已清理,getter 现在只是myBehaviorSubject.value.

我只是想将此添加为答案,因为我几乎没有阅读原始问题的评论,并且会错过正确答案。

于 2017-02-13T18:04:37.567 回答
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 中的重大变化的评论都链接到关于 observables 的评论与非行为主题相关。

于 2019-11-06T07:00:01.703 回答