Есть ли шанс пропустить «следующую» часть из Rx Js «подписаться» - PullRequest
1 голос
/ 24 января 2020

Мне интересно, смогу ли я преобразовать следующий фрагмент кода в один без 'next' части из Rx JS 'subscribe'. Мне не интересно получать какие-либо результаты от сервиса. Единственное, что здесь имеет значение, это уловить потенциальную ошибку, чтобы правильно отреагировать.

    this.someService.getSomething(this.id)
      .pipe(
          takeUntil(this.destroy$)
      )
      .subscribe(() => {
        // I don't need this part at all
      }, (error: HttpErrorResponse) => {
        if (error.status === 404) {
           // doing sth important
        }
      });

Есть ли шанс сделать что-то с этим в Angular?

Ответы [ 3 ]

3 голосов
/ 24 января 2020

Вы можете попробовать что-то с catch / catchError :

DEMO

this.someService.getSomething(this.id)
  .pipe(
    takeUntil(this.destroy$),
    catchError(
      (error: HttpErrorResponse) => {
        if (error.status === 404) {
          // doing sth important
        }
      })
  );
1 голос
/ 24 января 2020

Вы можете передать PartialObserver , чтобы подписаться и определить или опустить next, error и complete:

source.subscribe({ error: (e: any) => console.error(e) })
1 голос
/ 24 января 2020

Как уже было сказано выше, вы можете использовать оператор catchError. Но, если вам все равно нужна подписка, вы также можете использовать метод подписки, подобный этому this.someService.getSomething(this.id).subscribe(null, (error) => {..})

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