Угловой 6 - Наблюдаемый никогда с броском - PullRequest
0 голосов
/ 01 декабря 2018

Я ищу лучший способ справиться с наблюдаемым в Angular.Текущий дизайн:

public login(email: string, password: string): Observable<string> {
    return this.http
      .post(environment.apiUrl + '/login', {
        email: email,
        password: password
      })
      .map(response => {
        this.authenticationService.setToken(response["token"]);
        return "OK;"
      })
      .catch(error => {
        console.error('LoginService::error', error);
        return throwError(error);
      });
  }

Это все работает нормально, но я не хочу возвращать "ОК" без причины.

Я попробовал следующее, но оно говорит, что вы можете 'назначить Observable на Observable

public login(email: string, password: string): Observable<never> {
    return this.http
      .post(environment.apiUrl + '/login', {
        email: email,
        password: password
      })
      .map(response => {
        this.authenticationService.setToken(response["token"]);
      })
      .catch(error => {
        console.error('LoginService::error', error);
        return throwError(error);
      });
  }

1 Ответ

0 голосов
/ 01 декабря 2018
  public login(email: string, password: string) {
    return this.http
      .post(environment.apiUrl + '/login', {
        email: email,
        password: password
      }).pipe(
        tap({
          next: response => {
            this.authenticationService.setToken(response["token"]);
          }, 
          error: error => {
            console.error('LoginService::error', error);
          },
        }),
      )
  }

Оператор tap добавляет некоторую логику в ваш Observable для каждого выброса и для событий ошибки / завершения, если вы того пожелаете.Оператор не ожидает возврата и полностью игнорирует их, а все остальное, что происходит с Observable, будет продолжаться как обычно.

...