Simple way to get the current value of a BehaviorSubject with rxjs5

混江龙づ霸主 提交于 2019-11-30 21:26:47

问题


Previously in rxjs4 there was a method in the BehaviorSubject called: getValue() (doc here).

This method does not exist any more in rxjs5.

So the only solution that I found to get the value of a BehaviorSubject was:

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

This code run synchronously (I do not exactly understand why, but it does ...) and get the value. It work, but it's not as clean as it could be if getValue() was present:

let value = myBehaviorSubject.getValue();

Why getValue() was removed in rxjs5 and what's the cleanest solution to this problem?


回答1:


As was pointed out by artur grzesiak in the comments, the BehaviorSubject interface was cleaned up, and the getter is now just .value.

I just wanted to add this as an answer because I almost didn't read the comments to the original question, and would have missed the correct answer.

Update 2019/11/05: See Jamie Barker's comment below: If anyone is using .value they will find from version 6.5.0 that it will no longer work. It was never intended for consumer use: github.com/ReactiveX/rxjs/issues/5085




回答2:


Look at the source code to a behavior subject

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

It still has a getValue method, it has a value property that just calls getValue, it was there in RxJs5.

Here is a StackBlitz using RxJs5.

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

All the comments talking about a breaking change in 6.5.0 are linking to comments about observables make with of not behavior subjects.



来源:https://stackoverflow.com/questions/38784566/simple-way-to-get-the-current-value-of-a-behaviorsubject-with-rxjs5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!