[英]how to return boolean value based on condition check in array object javascript
[英]How to return boolean observable and check that boolean value
我想使用 observable 來同步運行我的代碼,我想在從服務器獲取圖標后返回一個真值,以便我可以使用它。 我該怎么做 ?
ngOnInit() {
this.addIcons().subscribe(data=>{
if(data===true)
//do something use the data
});
}
addIcons():Observable<boolean>{
this.Service.getIcons().subscribe(icons => {
return return observableOf(true);
});
return observableOf(false);
}
您的addIcons
方法變為:
import { of } from 'rxjs';
import { switchMap } from 'rxjs/operators'
ngOnInit() {
this.addIcons().subscribe(data=>{
if(data===true)
//do something use the data
});
}
addIcons():Observable<boolean>{
return this.Service.getIcons().pipe(
switchMap((response) =>{
// do something with icons response
// based on some condition return true or false
return of(true)
})
)
}
addIcons():Observable<boolean>{
const result = new Subject<boolean>();
this.Service.getIcons().subscribe(icons => {
result.next(true);
result.complete();
},
error => {
result.next(false);
result.complete();
});
return result.asObservable();
}
您的 addIcons() 函數始終返回可觀察的 false。 您首先訂閱 getIcons() 函數,然后返回 observableOf(false) ,然后才會發生訂閱。
我會做以下事情
private sub: Subscription;
ngOnInit() {
this.sub = this.getIcons$()
.subscribe(data => {
if (data){
//do something use the data
}
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
getIcons$(): Observable<boolean> {
return this.Service.getIcons()
.pipe(
map(icons => {
return icons ? true : false
})
)
}
不要忘記取消訂閱 observable 訂閱,否則會出現內存泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.