Angular 7(RxJs 6.x)-如何使用throwError

时间:2019-02-14 09:21:36

标签: angular rxjs6

我想在用户上使用第二个参数(错误),但点不起作用。

我的可观察代码:

return Observable.create(obs => {
  cognitoidentityserviceprovider.adminCreateUser(params, function(error, data) {
    if (error) {
      console.log(error);
      return throwError(error || 'Server error');
    } else {
      console.log(data);
      return obs.next(data.User);
    }
  });
});

我的console.log(error);还可以,但是什么也没做(无踪迹)。

我的订户代码:

this.myService.createUser(user).subscribe(
         result => this.getUsers(),
         error =>  this.errorUsersProcessor(error));

我的用户的第二个参数(错误)永远不会调用。

2 个答案:

答案 0 :(得分:2)

从文档中: throwError

  

创建一个Observable,该Observable不向观察者发出任何项目,并立即发出>错误通知。

所以我的猜测是throwError会向新的观察者而不是您正在订阅的观察者发出错误。

您可以尝试通知您是实际的观察者,以发出以下错误:

obs.error(error || new Error('Server error'));

答案 1 :(得分:0)

您应该能够使用pipe和catchError运算符。您可以尝试以下代码吗?

this.myService.createUser(user).pipe(
     switchMap(response => this.getUsers()),
     catchError(err =>  this.errorUsersProcessor(error))
);