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

Les fonctions asynchrones en JavaScript renvoient-elles toujours des promesses ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 09:54:37729parcourir

Do Async Functions in JavaScript Always Return Promises?

Promesses implicites dans les fonctions asynchrones

En JavaScript, les fonctions asynchrones sont des fonctions qui peuvent attendre de manière asynchrone qu'une promesse se termine et renvoie sa valeur. Cependant, une idée fausse courante est que les fonctions asynchrones renvoient implicitement une promesse pour la valeur qu'elles renvoient.

Comprendre la valeur de retour

Bien qu'il puisse sembler que les fonctions asynchrones renvoient implicitement une promesse, ce n’est pas tout à fait exact. La valeur de retour d'une fonction asynchrone peut être l'une des deux choses suivantes :

  • Une valeur non promise : lorsqu'une fonction asynchrone renvoie explicitement une valeur non promise, elle enveloppe automatiquement cette valeur dans une promesse.
  • Une promesse : La valeur de retour d'une fonction asynchrone qui est elle-même une promesse reste inchangée.

Exemple avec Valeur non promise :

async function increment(num) {
  return num + 1;
}

increment(3).then(num => console.log(num)); // Logs: 4

Ici, nous renvoyons un nombre de la fonction asynchrone. Cependant, le résultat est récupéré via .then(), indiquant qu'il s'agit d'une promesse qui a été résolue à la valeur 4.

Promesses explicites :

Si nous renvoie explicitement une promesse d'une fonction asynchrone, nous recevons une promesse pour cette valeur, pas une promesse pour une promesse.

async function increment(num) {
  return Promise.resolve(num + 1);
}

increment(3).then(num => console.log(num)); // Logs: 4

Exceptionnel Cas :

  • Fonctions asynchrones vides : même si une fonction asynchrone n'a pas d'instruction de retour explicite, elle renvoie toujours une promesse pour undefined.
  • Attendre dans les fonctions asynchrones : utiliser wait dans une fonction asynchrone n'affecte pas le type de la valeur de retour. Il sera toujours enveloppé dans une promesse si la valeur renvoyée n'est pas une promesse.

Conclusion

Les fonctions asynchrones en JavaScript enveloppent implicitement les valeurs de retour non promises dans une promesse. Cependant, si la valeur de retour est déjà une promesse, elle reste inchangée. Ce comportement diffère des instructions return traditionnelles mais est cohérent avec les principes sous-jacents des générateurs dans ES6.

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