Maison > interface Web > js tutoriel > Comment exécuter correctement du code asynchrone au niveau supérieur en JavaScript ?

Comment exécuter correctement du code asynchrone au niveau supérieur en JavaScript ?

DDD
Libérer: 2024-12-13 06:44:19
original
215 Les gens l'ont consulté

How Do I Properly Execute Asynchronous Code at the Top Level in JavaScript?

Exécution de haut niveau du code asynchrone

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.

Explication

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.

Solutions

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
Copier après la connexion

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)
  }
})();
Copier après la connexion

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
  });
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal