Rxjs http get请求的惰性属性
我想在服务中创建一个lazy属性,这意味着——我想有一个(比方说)布尔成员,它应该由get请求初始化。 属性检查成员是否已初始化: 1.如果是,则返回值或该值的可观察值。 2.如果不是-执行get请求,则初始化成员,然后重新返回值(或可观察值)。 this.getIsTrue是一个http get请求。 请参见服务中的“我的代码”:Rxjs http get请求的惰性属性,rxjs,angular2-services,angular-observable,Rxjs,Angular2 Services,Angular Observable,我想在服务中创建一个lazy属性,这意味着——我想有一个(比方说)布尔成员,它应该由get请求初始化。 属性检查成员是否已初始化: 1.如果是,则返回值或该值的可观察值。 2.如果不是-执行get请求,则初始化成员,然后重新返回值(或可观察值)。 this.getIsTrue是一个http get请求。 请参见服务中的“我的代码”: isTrue: boolean = null; get IsTrue() : Observable<boolean> // It can return
isTrue: boolean = null;
get IsTrue() : Observable<boolean> // It can return even boolean and not
observablle
{
if (this.isTrue!= null)
{
return of(this.ifTrue); // can return even boolean and not
observablle
}
else
{
this.getIsTrue().subscribe(result => {
this.isTrue = result;
return of(this.isTrue);});
}
}
isTrue:boolean=null;
get IsTrue():Observable//它可以返回布尔值,也可以不返回
可观察
{
if(this.isTrue!=null)
{
返回(this.ifTrue);//可以返回偶数布尔值,也可以不返回
可观察
}
其他的
{
this.getIsTrue().subscribe(结果=>{
this.isTrue=结果;
归还(这是真的);
}
}
如果您需要产生副作用而不是订阅副作用,可以使用点击
:
return this.getIsTrue().pipe(
tap(result => this.isTrue = result),
);