Renvoi de valeurs à partir de fonctions asynchrones avec async-await
Lors de l'appel d'une fonction asynchrone à l'aide de la syntaxe async-await, accès direct à la valeur de retour peut donner lieu à une promesse en attente. Cet article explique comment résoudre ce problème.
En attente de valeurs en dehors de la portée asynchrone
Votre tentative initiale d'enregistrement de la valeur de retour de la fonction getData a échoué car vous étiez tenter d'attendre une valeur en dehors d'une portée asynchrone. La syntaxe async-wait ne peut être utilisée que dans des fonctions ou des blocs asynchrones (indiqués par le mot-clé async).
IIFE asynchrone pour envelopper la journalisation
Pour résoudre ce problème, vous pouvez envelopper votre instruction console.log dans une expression de fonction immédiatement invoquée (IIFE) asynchrone comme ceci :
(async () => { console.log(await getData()); })();
Ceci garantit que la journalisation est effectuée dans un contexte asynchrone, permettant à la syntaxe d'attente de fonctionner correctement.
Omettre Async/Await pour les retours de promesse
Dans votre exemple, axios renvoie une promesse. Dans de tels cas, vous pouvez simplifier votre code en omettant la syntaxe async/await pour votre fonction getData et en utilisant directement l'objet Promise :
function getData() { return axios.get('https://jsonplaceholder.typicode.com/posts'); }
Ensuite, vous pouvez toujours utiliser l'IIFE asynchrone pour enregistrer le résultat comme avant :
(async () => { console.log(await getData()); })();
En suivant ces approches, vous pouvez vous assurer que les valeurs renvoyées par les fonctions asynchrones utilisant async-await sont correctement accessibles et géré.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!