【问题标题】:Angular 7 (RxJs 6.x) - How to use throwErrorAngular 7 (RxJs 6.x) - 如何使用 throwError
【发布时间】:2019-02-14 18:42:50
【问题描述】:

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

我的 Observable 的代码:

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


    【解决方案1】:

    来自文档: 抛出错误

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-10-08
        • 1970-01-01
        • 2018-12-14
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多