我的服务方法如下所示。在那里,我管理下一个和错误。但是,由于我想让我的用户免于实际的错误消息,我只希望显示操作的结果。这就是为什么我选择发出一个布尔值,将成功映射为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 => { ... }
);
在这种特殊情况下,这是一种明智的做法,还是在没有意识到这一点的情(这对我来说似乎很棒,但有时天才的中风可能只是中风......)
答案 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();