【问题标题】:How to run through array on Javascript?如何在Javascript上运行数组?
【发布时间】:2020-08-25 02:12:18
【问题描述】:

我无法从 Ionic 5 上的电容器存储中检索所有值,我一直在检索 ZoneAwarePromiseArray 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))
      }
      
    })
  }

//服务存储.ts

async keys() {
    const { keys } = await Storage.keys();
    console.log('Got keys: ', keys);
    return keys
}

【问题讨论】:

    标签: javascript ionic5


    【解决方案1】:

    电容器存储是异步的,因此要检索它拥有的所有值,您需要:

    1. 确保电容器已初始化
    2. 获取密钥
    3. 编写一个可以进行异步处理的循环

    这应该可以工作(这将按顺序检索数据):

    ngOnInit() {  
        let values = [];  
        this.storage.keys().then(async (keys) => {
          for (let key of keys) {
            let value = await this.storage.get(key)
            values.push(value)
          };
        });
      }
    

    你也可以让 Promise 并行运行:

      ngOnInit() {  
        let values = [];  
        this.storage.keys().then(async (keys) => {
          const promises = keys.map(key => this.storage.get(key))
          values = await Promise.all(promises);
        });
      }
    

    【讨论】:

    • 谢谢我做到了,你能告诉我如何同时看到结果吗?我必须刷新页面才能看到更改
    • 如果我能按 id (1,2,3...) 排序就好了
    • 嗯,你能详细说明一下吗?通过查看结果,您是指控制台还是?
    • 我的意思是在应用程序中,当它已经保存在存储中时,在其他选项卡中应该出现新的选项卡,但仅在刷新应用程序时出现(浏览器上的 F5),哦对不起数字,键是:0,1,2,3,值是文本,那么我只想确保它是按数字排序的
    • 什么都没有?我仍然需要为什么我需要刷新它才能看到新结果
    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-09-10
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多