Ionic 3 存储问题在浏览器中不起作用
Ionic 3 Storage Issue Not Working in Browser
好吧,我要把我的头发扯掉(剩下的)。每当我在清除所有 cookies/storage 项目后从头启动应用程序时,我都会检查某些项目...从而查看此人是否已登录或未登录应用程序。
让他们通过 firebase 登录(成功)后,它 returns 回到应用程序,然后我们在其中设置 UID 并为我们的 API 调用获取 google 令牌.所有值均已确认并正在成功检索。
我们通过存储服务提供商设置这些。设置好这些后,我们将尝试从我们的 API 调用一些东西,这需要 google 令牌。当我们尝试从存储中检索它时,它不存在。但是,如果我只是在 debugging/application 选项卡中刷新我的浏览器(不清除 cookies/etc),神奇的是 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);
}
);
}
有人能看出我做错了什么吗?这是我们如何称呼它的一个简短片段,它总是 returns 在 CMD + R 之前设置无令牌。一旦我执行 CMD + R,一切都在那里,并且一切正常。
await this.storage.get('Token').then((results) => {
this.token = results;
})
if(this.token == null)
{
return Promise.reject("No Token Set");
}
尝试:
this.token = await this.storage.get(‘Token’);
而不是你在 async 方法中使用 await 的方式。
也很好读:https://www.joshmorony.com/using-asyncawait-syntax-for-promises-in-ionic/
好吧,我要把我的头发扯掉(剩下的)。每当我在清除所有 cookies/storage 项目后从头启动应用程序时,我都会检查某些项目...从而查看此人是否已登录或未登录应用程序。
让他们通过 firebase 登录(成功)后,它 returns 回到应用程序,然后我们在其中设置 UID 并为我们的 API 调用获取 google 令牌.所有值均已确认并正在成功检索。
我们通过存储服务提供商设置这些。设置好这些后,我们将尝试从我们的 API 调用一些东西,这需要 google 令牌。当我们尝试从存储中检索它时,它不存在。但是,如果我只是在 debugging/application 选项卡中刷新我的浏览器(不清除 cookies/etc),神奇的是 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);
}
);
}
有人能看出我做错了什么吗?这是我们如何称呼它的一个简短片段,它总是 returns 在 CMD + R 之前设置无令牌。一旦我执行 CMD + R,一切都在那里,并且一切正常。
await this.storage.get('Token').then((results) => {
this.token = results;
})
if(this.token == null)
{
return Promise.reject("No Token Set");
}
尝试:
this.token = await this.storage.get(‘Token’);
而不是你在 async 方法中使用 await 的方式。
也很好读:https://www.joshmorony.com/using-asyncawait-syntax-for-promises-in-ionic/