Comment récupérer des valeurs à partir de fonctions asynchrones avec Async-Await
En JavaScript, comprendre comment renvoyer des valeurs à partir de fonctions asynchrones est crucial. Examinons un scénario :
Scénario :
Considérez l'extrait de code suivant :
const axios = require('axios'); async function getData() { const data = await axios.get('https://jsonplaceholder.typicode.com/posts'); return data; } console.log(getData());
Problème :
Si vous exécutez ce code, vous rencontrerez une "Promesse {
Solution :
Pour résoudre ce problème, nous doit adhérer à la règle selon laquelle les opérations asynchrones ne doivent être attendues que dans un autre contexte asynchrone. Dans notre cas, nous pouvons y parvenir en encapsulant l'instruction console.log() dans une IIFE asynchrone (expression de fonction immédiatement invoquée) :
async function getData() { return await axios.get('https://jsonplaceholder.typicode.com/posts'); } (async () => { console.log(await getData()) })()
Cela garantit que l'instruction console.log() est uniquement exécutée une fois que la fonction GetData() a terminé son opération asynchrone et renvoyé le data.
Alternative :
Si axios renvoie une promesse, comme c'est le cas dans votre code, nous pouvons simplifier le code en supprimant l'async et l'attente de getData() . Le code devient alors :
function getData() { return axios.get('https://jsonplaceholder.typicode.com/posts'); } (async () => { console.log(await getData()) })()
On obtient toujours le même résultat en attendant la fonction getData() dans un contexte asynchrone.
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!