Maison >interface Web >js tutoriel >Pourquoi « console.log » apparaît-il avant les résultats de la fonction asynchrone dans le code « async » de niveau supérieur ?
Dans async/await, il est supposé que les fonctions asynchrones renverront des promesses. Cependant, lorsqu'une fonction asynchrone est utilisée au niveau supérieur sans gestion explicite de la promesse, des complexités surviennent.
Le problème ici est que la fonction principale renvoie une promesse , laissant l'instruction console.log('outside: ' text) bloquée sans valeur à afficher immédiatement. La syntaxe async/await provoque la journalisation du message « intérieur » après le message « extérieur » car elle attend que la promesse renvoyée par main() soit réglée avant de continuer.
Pour utiliser la valeur renvoyée sans gestion explicite de then(), vous disposez de trois options :
1. Attente de niveau supérieur dans les modules
(Disponible dans les environnements modernes avec prise en charge ES2022)
const text = await main(); console.log(text);
2. Fonction asynchrone de haut niveau qui ne rejette jamais
(async () => { try { const text = await main(); console.log(text); } catch (e) { // Handle Promise rejection or async exceptions here } })();
3. puis et attrape
main() .then(text => { console.log(text); }) .catch(err => { // Handle Promise rejection or async exceptions here });
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!