Обещание Observable не улавливает ошибки правильно - PullRequest
0 голосов
/ 12 июня 2018

У меня есть следующая функция.Я удалил из него ненужный код, чтобы его было проще читать.

add() {
    const listingId = 'xyz';

    const promise = new Promise((resolve, reject) => {
      reject(Error(`error msg`));
    });

    return from(promise).pipe(
      map(() => listingId),
      catchError(error => of(error.message))
    );
  }

Я подписываюсь на наблюдаемую информацию вот так:

this.service.add().subscribe(
      listingId => {
        console.log(`listingId:`, listingId);
      },
      error => {
        console.log(`Error:`, error);
      },
      () => {
        console.log(`Completed`);
      }
    );

Проблема в том, что ошибка перехватываетсяв следующем () вместо error ().Вывод консоли:

listingId: error msg
Completed

Должно быть:

Error: error msg

Что я делаю не так?

1 Ответ

0 голосов
/ 12 июня 2018

в этой строке catchError(error => of(error.message)) вы ловите ошибку с catchError и после этого переключение потока на of(error.message), catchError работает как switchMap, вы обрабатываете ошибку и переключаетесь на другую наблюдаемую

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