Я столкнулся с тупиковой ситуацией при разработке в Ionic 3 (angular4). Я просто переделываю ранее написанное приложение angular на Ionic, но проблема возникла с тех пор, как я решил использовать Ionic «хранилище» вместо «localStorage».
Проблема вызвана крошечной разницей: в локальном хранилище метод «get» просто возвращает значение, а метод «get» хранилища Ionic возвращает обещание.
Теперь мне нужна функция, которая считывает определенное значение из хранилища и возвращает его, и по некоторым причинам я не могу разместить обещание, в котором я хочу использовать это значение.
Есть ли способ добиться аналогичного поведения метода 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);
}
});
}