Angular наблюдаемый метод подписки вызывает тот же метод для next () и error () - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть функция, которая возвращает наблюдаемые, и мне нужно перенаправить на домашнюю страницу, независимо от того, возвращает ли эта наблюдаемая данные или ошибку. Примерно так:

  private initializeCurrentUser() {
    this.userService
      .initializeCurrentUser()
      .subscribe(
        () => this.router.navigate(['']), //next
        () => this.router.navigate([''])  //error
      );
  }

Есть ли способ обобщить вызовы next () и error () для предотвращения дублирования кода?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вы можете использовать оператор finalize:

private initializeCurrentUser() {
 this.userService
  .initializeCurrentUser()
  .pipe(finalize(() => this.router.navigate([''])))
  .subscribe(() => {});
}
0 голосов
/ 13 февраля 2020

Вы можете использовать оператор catchError. Оператор обрабатывает ошибки в наблюдаемой последовательности и возвращает наблюдаемые, поэтому при подписке вы получаете только следующее значение.

Rx JS - catchError

Например:

private initializeCurrentUser() {
 this.userService
  .initializeCurrentUser()
  .pipe(catchError(() => of()))
  .subscribe(() => this.router.navigate(['']));
}
...