Estoy atascado recuperando todos los valores del almacenamiento de condensadores en Ionic 5, estoy recuperando todo el tiempo ZoneAwarePromise o Array Iterator , ¿cómo lidiar con eso?

Gracias

//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))
      }
      
    })
  }

// SERVICIO DE ALMACENAMIENTO.ts

async keys() {
    const { keys } = await Storage.keys();
    console.log('Got keys: ', keys);
    return keys
}
0
M. Mariscal 23 ago. 2020 a las 17:41

1 respuesta

La mejor respuesta

El almacenamiento de condensadores es asíncrono, por lo que para recuperar todos los valores que tiene, debe:

  1. Asegúrese de que el condensador se haya inicializado
  2. Obtén las llaves
  3. Escribe un bucle que pueda realizar un procesamiento asíncrono.

Esto debería funcionar (esto recuperará los datos secuencialmente):

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

También puede hacer que las promesas se ejecuten en paralelo:

  ngOnInit() {  
    let values = [];  
    this.storage.keys().then(async (keys) => {
      const promises = keys.map(key => this.storage.get(key))
      values = await Promise.all(promises);
    });
  }
0
Sergey Rudenko 23 ago. 2020 a las 15:47