仅使用下一个省略错误并在Angular observable中完成是否有意义?

时间:2018-05-07 20:28:49

标签: angular typescript rxjs observable angular-services

我的服务方法如下所示。在那里,我管理下一个错误。但是,由于我想让我的用户免于实际的错误消息,我只希望显示操作的结果。这就是为什么我选择发出一个布尔值,将成功映射为true,将失败映射为false。

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

然后我想,消费组件中唯一可能的结果是成功,因为底层服务中的任何结果都映射到 next 。我也知道我会收到一个单独的值(使得observables的使用有点过分)。所以,我实现了以下消费者。

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

在这种特殊情况下,这是一种明智的做法,还是在没有意识到这一点的情(这对我来说似乎很棒,但有时天才的中风可能只是中风......)

1 个答案:

答案 0 :(得分:0)

如果链条形成良好,您在订阅时不需要太多逻辑。在你的情况下,如果成功使用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();