[英]Angular - RxJS - Return observable when a value is true
我有这个功能。 我想要这些行:
this.setHeaders(url);
return this.request(url, options);
当this.refreshTokenService.wait === false
时执行。
private catchErrors(url: string | Request, options?: RequestOptionsArgs) {
return (res: Response) => {
if (res.status === 401 || res.status === 403) {
if (this.refreshTokenService.wait === false) {
console.log('FIRST');
this.refreshTokenService.wait = true;
return this.refreshTokenService.refreshToken(localStorage.getItem('JWToken'))
.flatMap((result: any) => {
// if got new access token - retry request
localStorage.setItem('JWToken', JSON.parse(result._body).token);
this.setHeaders(url);
this.refreshTokenService.wait = false;
return this.request(url, options);
})
} else {
// TODO here
this.setHeaders(url);
return this.request(url, options);
}
} else {
Observable.throw(res);
}
};
}
但是该函数只希望返回可观察到的或保证运行平稳。
谢谢
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
if (typeof url === 'string') {
if (!options) {
options = {headers: new Headers()};
}
this.setHeaders(options);
} else {
this.setHeaders(url);
}
return super.request(url, options).catch(this.catchErrors(url, options));
}
在最后的else语句中,您需要返回可观察值。 所以代替
else {
Observable.throw(res);
}
您需要执行以下操作:
else {
return Observable.throw(res);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.