Angular 7 (RxJs 6.x) - Как использовать throwError - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу использовать второй параметр (ошибка) на моем подписчике, но точка не работает.

Код моего наблюдаемого:

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

my console.log(error); isХорошо, но после ничего (без следа).

Код моего абонента:

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

второй параметр (ошибка) на моем абоненте никогда не вызывать.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Из документации: throwError

Создает Observable, который не отправляет никакие объекты в Observer и немедленно отправляет> уведомление об ошибке.

Так что я предполагаю, чтоthrowError выдает ошибку новому наблюдателю, а не тому, на которого вы подписаны.

Вы можете попытаться уведомить своего фактического наблюдателя о возникновении ошибки, выполнив:

obs.error(error || new Error('Server error'));
0 голосов
/ 14 февраля 2019

Вы должны быть в состоянии использовать pipe и оператор catchError.Можете ли вы попробовать код ниже:

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