对Observable的承诺不会正确捕获错误

时间:2018-06-11 23:13:52

标签: angular rxjs

我有以下功能。我从中删除了不必要的代码,使其更易于阅读。

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`);
      }
    );

问题是错误是在next()而不是error()中捕获的。 控制台输出是:

listingId: error msg
Completed

应该是:

Error: error msg

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在这一行catchError(error => of(error.message))中,您发现catchError错误,在该流切换为of(error.message)后,catchError的工作方式与switchMap类似,您处理错误并切换另一个可观察的