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

问题描述 投票:2回答:2

我想在我的订阅者上使用第二个参数(错误)但不起作用。

我的观察代码:

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

我的订阅者上的第二个参数(错误)从不打电话。

angular rxjs6
2个回答
2
投票

从文档:throwError

创建一个Observable,它不向Observer发送任何项目,并立即发出>错误通知。

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

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

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

0
投票

您应该能够使用pipe和catchError运算符。你能试试下面的代码:

this.myService.createUser(user).pipe(
     switchMap(response => this.getUsers()),
     catchError(err =>  this.errorUsersProcessor(error))
);
© www.soinside.com 2019 - 2024. All rights reserved.