簡體   English   中英

從可觀察結果返回可觀察結果

[英]Return Observable From Result Of Observable

我是RxJS的新手,所以我不太確定我應該在這里問什么問題。 我有一個返回Observable布爾值的服務:

@Injectable
export class UserService {
  private isLoggedInSubject = new ReplaySubject<boolean>(1);
  public isLoggedIn = this.isLoggedInSubject.asObservable();
}

在Angular 6路由防護中,我傳遞了該值以防止訪問路由:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
  return this.userService.isLoggedIn.pipe(take(1)); 
}

如何獲取該值,並根據結果返回一個Observable? 我已經嘗試過類似這樣的多種變體,但是似乎缺少一些基本概念,因為這是相當普遍的事情。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
  const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));

  return isLoggedIn.[???something????](x => {
    if (x) {
      console.log('is logged in');
      return Observable.of(true);
    } else {
      console.log('is not logged in ');
      return Observable.of(false);
    }
  });
}

您只需將其與更多運算符鏈接在一起:

return this.userService.isLoggedIn.pipe(
  take(1),
  concatMap(x => {
    if (x) {
      console.log('is logged in');
      return Observable.of(true);
    } else {
      console.log('is not logged in ');
      return Observable.of(false);
    })
  },
);

順便說一句,您甚至不需要返回Observable.of 您可以只使用map並返回例如。 false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM