Проблема хранения Ionic 3 в браузере не работает
Хорошо, я собираюсь вырвать мои волосы (что от этого осталось). Всякий раз, когда я запускаю приложение с нуля после очистки всех файлов cookie / элементов хранения, я проверяю наличие определенных элементов... таким образом, проверяя, вошел ли пользователь в приложение или нет.
После того, как они войдут в систему через firebase (что успешно), он вернется обратно в приложение, где мы затем установим UID и получим токен Google для наших вызовов API. Все значения подтверждены и успешно извлекаются.
Мы устанавливаем их через поставщика услуг хранения. Как только они установлены, мы пытаемся вызвать что-то из нашего API, для этого нужен токен Google. Когда мы пытаемся извлечь это из хранилища, его там нет. Однако, если я просто обновлю свой браузер (не удаляя файлы cookie и т. Д.) На вкладке "Отладка / Приложение", волшебным образом будут присутствовать значения localdb, и теперь все работает.
Вот поставщик хранилища:
@Injectable()
export class StorageProvider {
constructor(public http: HttpClient, public storage: Storage) {
console.log('Hello StorageProvider Provider');
}
public set(settingName,value):Promise<any>{
return this.storage.ready().then(() => {
this.storage.set(`setting:${ settingName }`,value).then(() => {
Promise.resolve(true);
})
.catch(err => {
Promise.reject(err);
})
})
.catch(err => {
console.log("ERROR Storage Not Ready: " + err);
})
} public async get(settingName){
return this.storage.ready().then(() => {
this.storage.get(`setting:${ settingName }`).then((res) => {
Promise.resolve(res);
})
.catch(err => {
Promise.reject(err);
})
})
.catch( err => {
console.log("Storage Get Error");
return Promise.reject(err);
}
);
}
Может кто-то видит, что я делаю не так? Вот краткий фрагмент того, как мы его называем, который всегда возвращает No Token Set до CMD + R. Как только я сделаю CMD + R, все будет, и все будет работать безупречно.
await this.storage.get('Token').then((results) => {
this.token = results;
})
if(this.token == null)
{
return Promise.reject("No Token Set");
}
1 ответ
Пытаться:
this.token = await this.storage.get(‘Token’);
Вместо того, чтобы использовать await в асинхронном методе.
Также хорошо читать: https://www.joshmorony.com/using-asyncawait-syntax-for-promises-in-ionic/