Имеет ли смысл использовать только следующую опущенную ошибку и завершенную в Angular наблюдаемой? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть метод в моем сервисе, как показано ниже. Там я управляю next и error . Однако, так как я хочу избавить своих пользователей от фактических сообщений об ошибках, я только хочу показать результат операции. Вот почему я решил выдать логическое значение, отображающее успех в истинное и неудачное в ложное.

logIn(userName: string, password: string): Observable<boolean> {
  const headers = new HttpHeaders({ userName: userName, password: password });

  return new Observable(_ => {
    this.client.post(environment.API + "Admin/LogIn", null, { headers: headers })
      .subscribe(
        next => _.next(true),
        error => _.next(false));
  });
}

Затем я понял, что единственный возможный результат в потребляющем компоненте - это успех, поскольку любой результат в базовом сервисе сопоставляется с следующим . Я также знаю, что получу одно значение (что делает использование наблюдаемых немного излишним). Итак, я реализовал следующий потребитель.

this.service.logIn(this.userName, this.password)
  .subscribe(
    next => { ... }
  );

Это мудрый подход в данном конкретном случае, или я упускаю что-то довольно критическое, не осознавая этого? (Мне кажется, это здорово, но иногда гениальный ход может оказаться просто ударом ...)

1 Ответ

0 голосов
/ 08 мая 2018

Вам не нужно слишком много логики в подписке, если цепочка сформирована хорошо. В вашем случае в случае успеха используйте map / do, а в случае ошибки используйте оператор catch вместо

this.service.logIn(this.userName, this.password)
.do(... do your success handling)
.catch(e=>{
   ... do you error handling logic
   return Observable.of(e)})
.subscribe();
...