Maison >interface Web >js tutoriel >Les fonctions asynchrones renvoient-elles toujours des promesses, même sans retours explicites ?

Les fonctions asynchrones renvoient-elles toujours des promesses, même sans retours explicites ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-17 21:48:12405parcourir

Do Async Functions Always Return Promises, Even Without Explicit Returns?

Retour implicite des promesses dans les fonctions asynchrones

Contrairement à l'hypothèse selon laquelle les fonctions asynchrones renvoient directement les valeurs des expressions d'attente, elles renvoient en fait toujours une promesse. Dans les cas où une instruction return explicite n'est pas présente, la valeur à renvoyer est automatiquement enveloppée dans une promesse. Cela est vrai pour toutes les valeurs de retour, y compris les non-promesses.

Exemple :

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

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

Dans ce scénario, même si un nombre est renvoyé, il est toujours encapsulé dans une promesse. Cela est évident lors de l'accès à la valeur renvoyée via la méthode then().

Autres cas :

  • Les fonctions sans instruction return renvoient également implicitement une promesse pour une valeur non définie.
  • Les fonctions asynchrones impliquant des expressions d'attente renvoient une promesse pour la valeur renvoyée par l'attente opération.

Exception :

Une exception à cette règle se produit lorsqu'une promesse est explicitement renvoyée depuis une fonction asynchrone. Dans de tels cas, la promesse n'est pas réemballée.

Exemple :

async function increment(num) {
  return new Promise(resolve => resolve(num + 1));
}

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

Conclusion :

Alors ce comportement peut s'écarter des instructions de retour JavaScript traditionnelles, il s'aligne sur le concept de générateurs dans ES6, qui ne renvoient pas la valeur exacte en retour déclaration.

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