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}`); }
3 Réponses :
Essayez de cette façon, avant d'attendre que alerte code> avant la récupération des données. p> p>
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é. p>
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. P>
JavaScript est asynchrone par nature, alors quand vous avez un Votre problème ici est que vous voulez retourner la promesse de votre en ajoutant Vous n'avez pas besoin d'attendre ce résultat en stockage local car le consommateur doit appeler prometteur code> renvoyé, le code continue d'exécuter et que
prometteur code> résout le temps après.
async / attendre code> 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. P>
getdata code> fonction et
attendre code> dans votre
FindMyage2 code> fonction. p>
ASYNC CODE> Mot-clé à une fonction Il va toujours renvoyer un
promess code>. Donc, vous n'avez pas besoin de
attendre code> dans votre déclaration code> code>. Cela ne fait effectivement rien. Ce serait comme dire: p>
attendre code> ou
ou
.Ce code> sur le résultat indépendamment. p> p>