Dans Angular 6, il est déconseillé aux développeurs d'utiliser le code suivant :
await someFunction().then(result => { console.log(result); });
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);
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!