Angular 从subscribe获取最后一个值
我有一个返回布尔值的函数getCurrentStatus,当我订阅这个方法时,它总是返回null然后返回true,当我尝试使用rxjs的函数last获得最后一个值true时,它不起作用,它总是执行处理2,从一开始就返回nullAngular 从subscribe获取最后一个值,angular,angular6,ngrx,rxjs6,Angular,Angular6,Ngrx,Rxjs6,我有一个返回布尔值的函数getCurrentStatus,当我订阅这个方法时,它总是返回null然后返回true,当我尝试使用rxjs的函数last获得最后一个值true时,它不起作用,它总是执行处理2,从一开始就返回null import { last } from 'rxjs/operators'; this.getCurrentStatus().pipe(last()).subscribe(status => { console.log(status); if (statu
import { last } from 'rxjs/operators';
this.getCurrentStatus().pipe(last()).subscribe(status => {
console.log(status);
if (status) {
// treatment 1
} else {
// treatment 2
}
});
private status$: Subscription;
getCurrentStatus(): Observable<Boolean> {
if (!this.status) {
this.status$ = this.store.pipe(select(fromUserSelector.getAuthStatus)).subscribe((status: Boolean) => {
this.status = status;
});
}
return of(this.status);
}
因为您的return语句在subscribe函数之外,并且您在从store获取数据时正在执行异步操作,所以这段代码有一些奇怪的地方。这是什么类型的。状态$?惯例是在可观测值的末尾有一个美元符号,但这是一个订阅。还有,选择是什么?它是地图的别名吗?正如@Suryan所说的,你没有正确地使用观测值和订阅。你在想synchronously@ShamPooSham此.status$实际上是订阅,他/她认为这是可观察的,并且由select使用,因为他/她正在使用ngrx/store来维护应用程序的状态