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 :
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 :
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!