Maison >interface Web >js tutoriel >Comment les fonctions asynchrones et les promesses fonctionnent-elles ensemble en JavaScript ?

Comment les fonctions asynchrones et les promesses fonctionnent-elles ensemble en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 20:15:17923parcourir

How Do Async Functions and Promises Work Together in JavaScript?

Fonctions et promesses asynchrones

Lorsque vous travaillez avec des opérations asynchrones, il est crucial de comprendre comment les fonctions et les promesses asynchrones interagissent.

Les fonctions asynchrones renvoient toujours des promesses

Contrairement aux fonctions régulières, Les fonctions asynchrones renvoient toujours une promesse, indiquant l'achèvement de leurs opérations asynchrones. Cela rend la gestion des opérations asynchrones dans le code séquentiel plus simple.

Exemple :

async function latestTime() {
  const bl = await web3.eth.getBlock('latest');
  return bl.timestamp;
}

Renvoi de valeurs primitives par rapport aux promesses

Bien que la fonction renvoie une valeur primitive (bl.timestamp), la fonction lastTime() elle-même renvoie une promesse. Cela peut prêter à confusion lorsque vous tentez d'accéder à la valeur de retour.

Utilisation des promesses

Pour accéder à la valeur résolue de la promesse renvoyée, vous devez utiliser le then( ) :

latestTime().then((time) => {
  console.log(time);
});

Alternativement, dans les environnements JavaScript modernes, vous pouvez utiliser le niveau supérieur wait :

const time = await latestTime();
console.log(time);

Gestion explicite des promesses

Pour plus de clarté, voici une représentation plus explicite du comportement de la fonction asynchrone en termes de rappels de promesse :

function latestTime() {
    return new Promise((resolve, reject) => {
        web3.eth.getBlock('latest').then((bl) => {
            resolve(bl.timestamp);
        })
    });
}

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