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

3

我想在我的订阅器中使用第二个参数(错误信息),但是点号不起作用。

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

我的订阅者上的第二个参数 (错误) 从未调用。

2个回答

2

从文档中可以看到:

创建一个 Observable,向观察者发出零个项并立即发出错误通知。

因此,我猜测 throwError 是将错误通知发送到一个新的观察者而不是你正在订阅的观察者。

你可以尝试通过以下方式通知你实际的观察者来发出错误:

observer.error(new Error('error message'));

"throwError" 的意思是 "抛出错误",它可以用来在 Observable 中抛出错误。

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

0
你应该能够使用管道和catchError操作符。你可以尝试下面的代码:
this.myService.createUser(user).pipe(
     switchMap(response => this.getUsers()),
     catchError(err =>  this.errorUsersProcessor(error))
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接