Maison > interface Web > js tutoriel > Pourquoi les fonctions asynchrones renvoient-elles toujours des promesses en JavaScript ?

Pourquoi les fonctions asynchrones renvoient-elles toujours des promesses en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-14 01:13:09
original
126 Les gens l'ont consulté

Why Do Async Functions Always Return Promises in JavaScript?

Fonction asynchrone renvoyant une promesse au lieu d'une valeur

Dans la programmation asynchrone/attente, une fonction asynchrone renvoie toujours une promesse. Cette promesse représente l'achèvement éventuel du travail asynchrone de la fonction.

Lorsque vous appelez une fonction asynchrone dans un autre contexte asynchrone, vous pouvez utiliser wait pour faire une pause jusqu'à ce que la promesse soit satisfaite. Cependant, dans un contexte non asynchrone (souvent le niveau supérieur ou le gestionnaire d'événements), vous devez utiliser directement la promesse :

latestTime()
.then(time => {
  console.log(time);
})
.catch(error => {
  // Handle/report error
});
Copier après la connexion

Dans les environnements modernes, l'attente de niveau supérieur est prise en charge dans les modules :

const time = await latestTime();
Copier après la connexion

Pour mieux comprendre, examinons une version de rappel de promesse explicite de votre fonction asynchrone :

function latestTime() {
  return new Promise((resolve, reject) => {
    web3.eth.getBlock('latest')
      .then(bl => {
        console.log(bl.timestamp);
        console.log(typeof bl.timestamp.then == 'function');
        resolve(bl.timestamp);
      })
      .catch(reject);
  });
}
Copier après la connexion

Dans ce rappel version :

  • La fonction d'exécuteur de promesse (transmise à la nouvelle promesse) s'exécute de manière synchrone, démarrant l'opération web3.eth.getBlock.
  • Toutes les erreurs dans l'exécuteur de promesse ou les rappels sont interceptées et converti en promesses de refus.

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