Maison > interface Web > js tutoriel > Comment récupérer les valeurs des fonctions asynchrones avec Async-Await en JavaScript ?

Comment récupérer les valeurs des fonctions asynchrones avec Async-Await en JavaScript ?

Barbara Streisand
Libérer: 2024-11-12 04:17:02
original
752 Les gens l'ont consulté

How to Retrieve Values from Async Functions with Async-Await in JavaScript?

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());
Copier après la connexion

Problème :

Si vous exécutez ce code, vous rencontrerez une "Promesse { }" dans la console. Au lieu de renvoyer les données attendues, nous recevons cette promesse en attente. La raison en est que nous essayons d'accéder au résultat d'une fonction asynchrone en dehors d'un contexte asynchrone.

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())
})()
Copier après la connexion

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())
})()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal