Maison >interface Web >js tutoriel >Les fonctions asynchrones renvoient-elles toujours des promesses, même sans retours explicites ?
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 :
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!