Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 从subscribe获取最后一个值_Angular_Angular6_Ngrx_Rxjs6 - Fatal编程技术网

Angular 从subscribe获取最后一个值

Angular 从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

我有一个返回布尔值的函数getCurrentStatus,当我订阅这个方法时,它总是返回null然后返回true,当我尝试使用rxjs的函数last获得最后一个值true时,它不起作用,它总是执行处理2,从一开始就返回null

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来维护应用程序的状态