Maison > interface Web > js tutoriel > L'attente d'une chaîne de promesses dans Angular 6 est-elle une odeur de code ?

L'attente d'une chaîne de promesses dans Angular 6 est-elle une odeur de code ?

DDD
Libérer: 2024-11-20 03:02:02
original
352 Les gens l'ont consulté

Is Awaiting a Promise Chain in Angular 6 a Code Smell?

Attendre une chaîne de promesses : est-ce un piège ?

Dans Angular 6, il est déconseillé aux développeurs d'utiliser le code suivant :

await someFunction().then(result => {
    console.log(result);
});
Copier après la connexion

Le problème n'est pas qu'il soit inutile d'attendre une chaîne de promesses - tant que someFunction() renvoie une promesse, les deux extraits fonctionnent de la même manière. Le problème est ailleurs.

La confusion vient du mélange des styles de programmation asynchrone. Les fonctions asynchrones, introduites dans ES2017, introduisent le mot-clé wait. Lorsque wait est utilisé dans une fonction asynchrone, il suspend l'exécution de la fonction et attend que la promesse soit résolue. Cela simplifie la programmation asynchrone et facilite la lecture et la compréhension du code.

D'un autre côté, le chaînage de promesses est une approche plus ancienne de la programmation asynchrone. Cela implique d’utiliser .then() pour enchaîner plusieurs promesses. Bien que cette approche soit toujours valable, elle peut prêter à confusion lorsqu'elle est mélangée avec wait.

Par exemple, si vous souhaitez ajouter un autre appel de promesse à l'emplacement de l'appel console.log() ou un retour conditionnel de la fonction , la sémantique devient floue. Pouvez-vous utiliser wait dans le rappel comme ailleurs dans la fonction ? Avez-vous besoin de renvoyer le résultat du rappel .then() ? Est-il même possible de revenir depuis la fonction externe ?

Pour éviter ces complications, il est recommandé de s'en tenir à un style de programmation asynchrone, en utilisant de préférence wait pour plus de cohérence. Ce faisant, vous pouvez simplifier votre code et réduire le risque d’introduction de bugs. La version la plus concise et claire serait :

const result = await someFunction();
console.log(result);
Copier après la connexion

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