0
votes

ASYNC Await le comportement

Un code simple pour comprendre Async / attendre me rend fou.

J'ai un bouton Cliquez sur lequel je lis de la valeur de LocalStorage et de l'afficher dans une zone d'alerte. Avant de montrer l'alerte, je veux consoler.Log la valeur. P>

Si j'ai compris ASYNC / Attends, mon code devrait exactement cela, mais cela fonctionne dans l'ordre inverse. D'abord, l'alerte arrive puis la console. P>

// méthode appelée bouton Cliquez sur P>

findMyAge2() {
    this.getData("age").then(result => {
      console.log('Hi');
      myAge2 = result;
    });
    alert(myAge2);
  }

  async getData(key): Promise<any> {
    return await this.storage.get(`${key}`);
  }


0 commentaires

3 Réponses :


0
votes

Essayez de cette façon, xxx

avant d'attendre que alerte avant la récupération des données.


0 commentaires

0
votes

async / attendre fonctionne comme avec des promesses, ce qui signifie que le code est exécuté et que vous ne savez pas quand il finira, vous savez que, après la fin, vous voulez que quelque chose d'autre soit exécuté.

C'est exactement Ce que vous mettez à l'intérieur de la fonction "Alors", qui est ce qui est exécuté après la 1ère partie (asyc getdata) est exécuté.

Dans le cas de votre code, le FindMyage2 est appelé lorsque vous cliquez sur le bouton, Ensuite, il exécute les getdata et spécifie ce qui se produit après avoir obtenu le résultat de cet appel, dans le bloc "Alors". Par conséquent, il vous suffit de déplacer l'alerte, dans le bloc "Alors", vous aurez le résultat que vous attendez. xxx


0 commentaires

1
votes

JavaScript est asynchrone par nature, alors quand vous avez un prometteur renvoyé, le code continue d'exécuter et que prometteur résout le temps après.

async / attendre est un moyen de contrôler ce flux de programmation et peut vous permettre de créer un code synchrone qui "attend" le résultat de l'exécution asynchrone.

Votre problème ici est que vous voulez retourner la promesse de votre getdata fonction et attendre dans votre FindMyage2 fonction. xxx

en ajoutant ASYNC Mot-clé à une fonction Il va toujours renvoyer un promess . Donc, vous n'avez pas besoin de attendre dans votre déclaration . Cela ne fait effectivement rien. Ce serait comme dire: xxx

Vous n'avez pas besoin d'attendre ce résultat en stockage local car le consommateur doit appeler attendre ou ou .Ce sur le résultat indépendamment.


0 commentaires