我正在寻找处理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
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);
});
}
答案 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发生的所有其他操作将照常继续。