12 javascript rxjs typescript angular-services angular
我正在学习RxJs,我正在寻求对我的假设进行确认或更正.
我试图在我可以在我的服务类的不同位置使用的服务中创建一个public read only observable .next().我想知道这是否是正确的方法:
private myObservable = new Subject<T>();
public myObservable$: Observable<T> = this.myObservable.asObservable();
Run Code Online (Sandbox Code Playgroud)
myObservable$myObservable.next(...);它的工作完美,但我有足够的经验知道我可能只是一个不知情的白痴(RxJS很大).这个用例是正确的模式和正确的对象吗?
你在做什么是对的。但是,还有一种更短的表示法。由于Subject已经是一个Observable(它继承了Observable类),因此可以将类型检查留给TypeScript:
private myObservable = new Subject<T>();
public myObservable$: Observable<T> = this.myObservable;
Run Code Online (Sandbox Code Playgroud)
您的服务的任何使用者都可以订阅myObservable$但无法调用,myObservable$.next()因为TypeScript不允许您这样做(Observable类没有任何next()方法)。
实际上,这是推荐的方法,RxJS在内部从不使用asObservable。有关更详细的讨论,请参见:
看到一个非常类似的问题:rxjs主题应该在班级中公开吗?
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |