Angular 限制rxjs可观察对象的订阅数
我想找到一个可观察的、主题的或事件的发射器替代品,它在任何给定的时间都只支持一个订阅。i、 e.第一个获得订阅的用户将有权执行其订阅主体,当其取消订阅时,将允许任何下一个订阅方继续 目前在observable、subject或event发射器中是否有支持此功能的方法,或者是否有允许此行为的替代方法 或者,如果有某种技术可以在有人订阅/取消订阅目标发射器时执行某些功能,那么我可以使用访问修饰符和布尔值来执行此功能 目前我正在尝试这样的方法:Angular 限制rxjs可观察对象的订阅数,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,我想找到一个可观察的、主题的或事件的发射器替代品,它在任何给定的时间都只支持一个订阅。i、 e.第一个获得订阅的用户将有权执行其订阅主体,当其取消订阅时,将允许任何下一个订阅方继续 目前在observable、subject或event发射器中是否有支持此功能的方法,或者是否有允许此行为的替代方法 或者,如果有某种技术可以在有人订阅/取消订阅目标发射器时执行某些功能,那么我可以使用访问修饰符和布尔值来执行此功能 目前我正在尝试这样的方法: private OpenDialogEmitter
private OpenDialogEmitter = new EventEmitter();
private isFirstFetch: boolean = true;
getDialogEmitter(): EventEmitter<{}> {
if (this.isFirstFetch) {
this.isFirstFetch = false;
return this.OpenDialogEmitter;
}
return null;
}
setFirstFetch(){
this.isFirstFetch = true;
}
private OpenDialogEmitter=new EventEmitter();
private isFirstFetch:boolean=true;
getDialogEmitter():EventEmitter{
if(this.isFirstFetch){
this.isFirstFetch=false;
返回这个.OpenDialogEmitter;
}
返回null;
}
setFirstFetch(){
this.isFirstFetch=true;
}
当有人取消订阅时,它必须通过在服务内调用setFirstFetch()方法再次标记observable可用
有更好的内置方法吗?很难说为什么需要这种方法,因为有
share
之类的操作符可以确保您始终只有一个订阅源可观测
由于EventEmitter
扩展了Subject
类,您可以检查它是否有以下订阅(请参阅):
如果要对订阅/取消订阅执行某些操作,可以使用Observable.defer()
并使用add()
方法向subscription
对象添加自定义分解函数:
const source = new Subject();
const o = Observable.defer(() => {
console.log('subscription');
return source; // or you can create the source inside this function if you want.
});
const subscription = o.subscribe(...);
subscription.add(() => {
console.log('unsubscription');
});
很难说你为什么需要这个,因为有一些操作符,比如
share
,可以确保你总是只订阅一个源代码
由于EventEmitter
扩展了Subject
类,您可以检查它是否有以下订阅(请参阅):
如果要对订阅/取消订阅执行某些操作,可以使用Observable.defer()
并使用add()
方法向subscription
对象添加自定义分解函数:
const source = new Subject();
const o = Observable.defer(() => {
console.log('subscription');
return source; // or you can create the source inside this function if you want.
});
const subscription = o.subscribe(...);
subscription.add(() => {
console.log('unsubscription');
});
我认为rxjs是React,而不是angular?rxjs:库在angular中可用,不确定它是否可用于React。rxjs是一个独立的库。事实上,对于可观察符号来说,是一个小的多边形填充;不推荐这样做。看,我以为rxjs是React,不是angular?rxjs:库在angular中可用,不确定它是否可用于React。rxjs是一个独立的库。事实上,对于可观察符号来说,是一个小的多边形填充;不推荐这样做。看见