Maison >interface Web >js tutoriel >L'utilisation de async/await dans un constructeur de promesse est-elle un anti-modèle ?

L'utilisation de async/await dans un constructeur de promesse est-elle un anti-modèle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-16 17:41:11376parcourir

Is Using async/await Inside a Promise Constructor an Anti-Pattern?

Utiliser async/await dans un constructeur Promise() : un anti-modèle ?

Dans ce scénario, vous utilisez un async Fonction .eachLimit pour gérer les opérations simultanées. Cependant, votre utilisation de async/await dans la fonction du constructeur Promise soulève des inquiétudes.

Anti-Pattern du constructeur de promesse

Utiliser des promesses dans la fonction d'exécution du constructeur de promesse, car vous que vous faites, est considéré comme un anti-modèle. Le principal risque, comme l'illustre votre code, est la possibilité que des erreurs passent sans être contrôlées.

De plus, async/await introduit une complexité supplémentaire, obscurcissant potentiellement ces problèmes. Par exemple, dans votre code :

let p = new Promise(resolve => {
  ""(); // TypeError
  resolve();
});

(async () => {
  await p;
})().catch(e => console.log("Caught: " + e)); // Catches it.

Ici, la TypeError passe inaperçue dans le constructeur de promesse, mais elle est interceptée lors de l'utilisation de async/await. De telles surprises peuvent être problématiques.

Par conséquent, même si votre code vous permet d'accéder aux valeurs dans les rappels imbriqués, il est essentiel de gérer les erreurs avec soin et d'éviter ces anti-modèles pour garantir un code robuste et maintenable.

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!

Déclaration:
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