角度6-永不抛出

时间:2018-12-01 13:25:03

标签: angular rxjs observable angular6

我正在寻找处理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 :(得分:1)

  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发生的所有其他操作将照常继续。