【发布时间】:2017-08-12 01:40:48
【问题描述】:
我在 Ionic 3 (angular4) 中开发时遇到了一个问题。我只是在 Ionic 中重做一个以前编写的 Angular 应用程序,但是自从我决定使用 Ionic “存储”而不是“localStorage”以来,问题就开始了。
问题是由微小的差异引起的,在本地存储中,“get”方法只返回一个值,但 Ionic 的存储“get”方法返回一个承诺。
现在,我需要一个从存储中读取特定值并将其返回的函数,但由于某些原因,我无法在要使用该值的地方提供承诺。
有没有办法在 get 方法上获得与 localStorage 类似的行为?
getAccessToken()
{
return this._storage.get('bdAccessToken');
}
getAuthorizationOptions(){
let token = this._authService.getAccessToken();
let header = new Headers({
'Authorization': 'Bearer '+ token
});
let ro = new RequestOptions({
headers: header
});
let options = new RequestOptions();
if (options.headers) options.headers.delete("Authorization");
options.headers = header;
return options;
}
get(url:string, options?:RequestOptions):Observable<Response>
{
return super.get(url, this.getAuthorizedOptions())
.catch(err => {
console.log("shit 1");
console.log(err);
if (err && err.status === 401){
console.log("401 here...");
return this._authService.refreshToken()
.flatMap(r =>
super.get(url, this.getAuthorizedOptions())
)
.catch(err2 => {
this.redirect();
return Observable.throw(err2);
});
}
else {
return Observable.throw(err);
}
});
}
【问题讨论】:
标签: angular ionic-framework angular-promise ionic3