Dans la programmation asynchrone, la fonctionnalité async/await vous permet de basculer entre les tâches synchrones et asynchrones de manière transparente. Cependant, lors de l'exécution de code asynchrone au niveau supérieur, certaines considérations doivent être prises en compte.
Lorsque vous définissez une fonction asynchrone, elle renvoie une promesse. Lorsque vous appelez cette fonction au niveau supérieur, elle renvoie immédiatement la promesse, et non la valeur résolue. C'est pourquoi votre console génère l'objet Promise avant d'exécuter la tâche asynchrone.
Pour résoudre ce problème, vous avez plusieurs options :
1. Attente de niveau supérieur (proposition ES2022)
Dans les environnements modernes, vous pouvez utiliser l'attente de niveau supérieur dans les modules. Cela vous permet d'attendre une promesse directement dans le périmètre du module.
const text = await main(); console.log(text); // Logs the resolved value
2. Fonction asynchrone de niveau supérieur avec rejet non géré
Vous pouvez définir une fonction asynchrone de niveau supérieur qui ne rejette jamais. Cela évite les erreurs de rejet non gérées, mais ne gère pas les erreurs explicitement.
(async () => { try { const text = await main(); console.log(text); // Logs the resolved value } catch (e) { // Error handling (optional) } })();
3. then() et catch()
Si aucune des options ci-dessus ne convient, vous pouvez utiliser les méthodes then() et catch() de Promise pour gérer le résultat.
main() .then((text) => { console.log(text); // Logs the resolved value }) .catch((err) => { // Error handling });
Remarque : Dans tous les cas, il est important de gérer correctement les rejets pour éviter les erreurs de rejet non gérées.
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!