我是Angular/TypeSript/Ionic4的新手,所以这可能有点傻,但我正在使用离子存储插件,你可以在这个页面"https://ionicframework.com/docs/building/storage“中找到它。我也遇到了不少麻烦。文档很清楚,但太简单了。
我需要检查我的存储空间是否为空,还需要查看存储空间的内容。
首先,我尝试了一下它的长度,期望它返回一个数字,但在服务上使用了以下代码:
getLenght(){
return this.storage.length().then((res) => {
return res;
});
}在我的页面上的代码中,我得到了一个对象结果:
storageLength : any; // it would give me error as a Number
clearStorage() {
this.dataStorageService.clear();
this.storageLength = this.dataStorageService.getLenght(); // returns object promise
alert(JSON.stringify(this.storageLength));
//{"__zone_symbol__state":null,"__zone_symbol__value":[]}然后我试着这样做,但由于这个错误,我甚至不能运行它:
this.storage.get("qrCodeData").then( this.storage.get("qrCodeData") =>{}).catch(err=>{
console.log("Your data don't exist and returns error in catch: " + JSON.stringify(err);
});错误是“'Promise‘类型的参数不能赋值给'(value: any) => any’类型的参数。'Promise‘类型不提供与签名'(value: any):any’匹配的签名”
所以不确定如何验证存储是否为emtpy,因为我遇到了各种问题,我在这里遗漏了什么?
发布于 2019-03-25 17:27:33
您可以尝试如下所示:
getLength() {
return new Promise(resolve => {
this.storage.get('qrCodeData').then((data) => {
if(data){
resolve(data);
}
});
})
} 如果数据是空的,数据将是未定义的,因此您可以检查它。
发布于 2019-03-25 23:40:47
目前还不清楚你到底在存储什么,也不清楚你到底想要实现什么。也就是说,在我看来,如果你使用async/await,处理从这个存储模块返回的promise信息要干净得多。下面是一个示例。
let qrInfo = await this.getQrCodeData();
console.log(`Here is the result: ${qrInfo}`);
...
async getQrCodeData(): Promise<string> {
await this.storage.ready();
let qrCodeInfo = await this.storage.get("qrCodeData");
return (qrCodeInfo) ? JSON.stringify(qrCodeInfo) : "";
}https://stackoverflow.com/questions/55334456
复制相似问题