【发布时间】:2017-01-20 00:26:17
【问题描述】:
我希望能够处理调用this.authService.refreshToken() 时出现的任何错误。是否可以在 switchmap 块中处理错误,或者在这种情况下如何处理错误?
post3(endpoint: string, body: string) : Observable<any> {
if (this.authService.tokenRequiresRefresh()) {
this.authService.tokenIsBeingRefreshed.next(true);
return this.authService.refreshToken().switchMap(
data => {
this.authService.refreshTokenSuccessHandler(data);
if (this.authService.loggedIn()) {
this.authService.tokenIsBeingRefreshed.next(false);
return this.postInternal(endpoint, body);
} else {
this.authService.tokenIsBeingRefreshed.next(false);
this.router.navigate(['/sessiontimeout']);
Observable.throw(data);
}
}
);
}
else {
return this.postInternal(endpoint, body);
}
}
【问题讨论】:
-
顺便说一句,你需要一个回报:
return Observable.throw(data);