Rxjs 扩展可观测并设置外部源
我想扩展Observable并设置另一个源(例如,另一个行为主体) 例如,NgRx正在这里进行: 但是RxJS Observable在“Observable.source”上给出了一个弃用警告: 这段代码使用的是不推荐使用的“Observable.source”-它可以工作:Rxjs 扩展可观测并设置外部源,rxjs,Rxjs,我想扩展Observable并设置另一个源(例如,另一个行为主体) 例如,NgRx正在这里进行: 但是RxJS Observable在“Observable.source”上给出了一个弃用警告: 这段代码使用的是不推荐使用的“Observable.source”-它可以工作: const source: BehaviorSubject<any> = new BehaviorSubject(1); class ObsStore extends Observable<any&g
const source: BehaviorSubject<any> = new BehaviorSubject(1);
class ObsStore extends Observable<any> {
constructor() {
super();
this.source = source; // Observable.source is deprecated
}
// Implement custom methods here
customMethod1() {}
}
export const obsStore$ = new ObsStore();
obsStore$.subscribe(data => console.log('output', data));
source.next(2);
// output 1
// output 2
const源代码:行为主体
不确定是否需要这样做
下面是一个stackblitz示例:
注意:我想扩展Observable并向其添加一些自定义公共方法。自定义Observable的行为应类似于BehaviorSubject,但不应公开next
或getValue
。实际上只有管道
,自定义方法应该是公共的。我从Ben Lesh(RxJS)那里找到了这条推文:
“我强烈建议人们不要从任何库中扩展Observable(或他们不拥有的任何类型)。”
另外,NgRx团队的Alex Okrushko认为NgRx最好不要扩展可观测范围。
组合将更好地工作,并经得起未来的考验。您能否提供更多的类用例,也许大多数时候您所需要的只是在构造函数中创建或传递源代码,而不是对其进行扩展。类obstore extends BehaviorSubject怎么样{
?我想说这样做是安全的。@Fan Cheung定制的Observable应该有一个类似于NgRx Store()的API。它是一个扩展Observable的类,并添加了一些其他方法,如dispatch
,select
…我希望能够在自定义Observable的实例上使用pipe
方法。@satanTime extending BehaviorSubject将在自定义Observable上公开getValue
或next
等方法。I j我们想从Observable和一些自己的方法中公开管道。