Maison  >  Article  >  interface Web  >  Quelles sont les valeurs de retour des fonctions asynchrones et quel est leur lien avec les promesses ?

Quelles sont les valeurs de retour des fonctions asynchrones et quel est leur lien avec les promesses ?

DDD
DDDoriginal
2024-10-18 10:35:29421parcourir

What Are the Return Values of Async Functions and How Do They Relate to Promises?

Fonctions asynchrones : comprendre les valeurs de retour et les promesses

Bien que les fonctions asynchrones vous permettent d'écrire du code dans un style synchrone, elles renvoient intrinsèquement des promesses. Cela peut prêter à confusion quant à la valeur de retour de votre code.

Promesses : un aperçu rapide

Les promesses sont des objets qui représentent l'achèvement ou l'échec éventuel d'une opération asynchrone. . Ils fournissent deux méthodes clés :

  • then(resolve, rejet) : traite le résultat de l'opération lorsqu'elle réussit (résolution) ou détecte une erreur (rejet).
  • catch( rejet) : gère les erreurs de manière asynchrone.

Fonctions et promesses asynchrones

Les fonctions asynchrones renvoient toujours une promesse, même si vous n'utilisez pas explicitement le mot-clé wait. . Cette promesse représente le résultat de l'opération asynchrone. Si la fonction renvoie une erreur, la promesse sera rejetée avec cette erreur.

Utilisation :

Promesses avec fonctions de rappel :

<code class="javascript">const myAsyncFunction = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
};

myAsyncFunction()
  .then(result => {
    console.log(`Callback Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

Promesses avec Async/Await :

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
  return result;
}

myAsyncFunction()
  .then(result => {
    console.log(`Await Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

Dans ces exemples, myAsyncFunction renvoie une promesse qui se résout avec la valeur « Valeur asynchrone » après un délai d'une seconde. . Les méthodes then et catch gèrent respectivement l'état résolu ou rejeté.

Renvoyer la promesse

Si vous souhaitez renvoyer la promesse elle-même sans aucune modification, vous pouvez simplement write :

<code class="javascript">const myAsyncFunction = () => {
  return new Promise(...);
};</code>

Renvoi d'une valeur modifiée

Pour renvoyer une valeur modifiée à partir d'une fonction asynchrone, vous devez gérer le résultat Promise dans la méthode then et renvoyer la valeur modifiée. Par exemple :

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise(...);
  return result.toUpperCase();
}</code>

Cette fonction renvoie une promesse qui se résout avec la version majuscule du résultat.

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!

Déclaration:
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