如何解决如何在Javascript上运行数组?
我一直无法从Ionic 5上的电容器存储中检索所有值,我一直在检索 ZoneAwarePromise 或 Array Iterator ,如何处理?
谢谢
// MAIN.ts
ngOnInit() {
let vaya = this.storage.keys()
.then(result => {
return result
});
vaya.then(data => {
for (let item of data) {
console.log(this.storage.getItem(item))
}
})
}
// SERVICE STORAGE.ts
async keys() {
const { keys } = await Storage.keys();
console.log('Got keys: ',keys);
return keys
}
解决方法
电容器存储是异步的,因此要检索它具有的所有值,您需要:
- 确保电容器已初始化
- 获取密钥
- 写一个可以进行异步处理的循环
这应该可以工作(这将顺序检索数据):
ngOnInit() {
let values = [];
this.storage.keys().then(async (keys) => {
for (let key of keys) {
let value = await this.storage.get(key)
values.push(value)
};
});
}
您也可以并行执行承诺:
ngOnInit() {
let values = [];
this.storage.keys().then(async (keys) => {
const promises = keys.map(key => this.storage.get(key))
values = await Promise.all(promises);
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。