Используя take (1) с Observable <boolean>? - PullRequest
0 голосов
/ 11 декабря 2018

Чтение через эту статью , и он использует следующую CanActivate проверку, чтобы увидеть, разрешено ли пользователю переходить на домашнюю страницу:

canActivate(): Observable<boolean> {
 return this.authQuery.isLoggedIn$.pipe(
   take(1),
   switchMap((isLoggedIn) => {
     if (!isLoggedIn) {
       this.router.navigate(['/login']);
     }
     return of(isLoggedIn);
   })
);

Мне интересно, чтоцель take(1) есть?Поскольку isLoggedIn$ является экземпляром Observable<boolean>, кажется, всегда есть только 1, чтобы взять?

1 Ответ

0 голосов
/ 11 декабря 2018

Да, это займет всего один раз, как при чтении снимка.

В этом случае canActivate вопрос в том, нужен ли он вам, так как вы НЕ подписываетесь, поэтому angular будет обрабатывать освобождение ресурсов, так какВы возвращаетесь к наблюдаемому.Так что я бы не использовал take в этом случае

take важно, если вы подписываетесь, поэтому вы прекращаете слушать наблюдаемые, когда они вам не нужны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...