Promesses JavaScript : explorer la distinction entre rejet() et throw()
Les promesses en JavaScript fournissent un mécanisme puissant pour gérer les opérations asynchrones. Le traitement des erreurs et des rejets dans Promises a soulevé des questions concernant les différences entre l'utilisation de Promise.reject() et le simple lancement d'une erreur.
Comparaison d'utilisation
Le code suivant des extraits démontrent l'utilisation des deux méthodes :
<code class="javascript">// Using Promise.reject() return asyncIsPermitted() .then(result => { if (result === true) { return true; } else { return Promise.reject(new PermissionDenied()); } });</code>
<code class="javascript">// Using throw return asyncIsPermitted() .then(result => { if (result === true) { return true; } else { throw new PermissionDenied(); } });</code>
Différence de comportement
En général, il n'y a aucune différence fonctionnelle entre l'utilisation de Promise.reject() et lancer une erreur dans un rappel Promise. Les deux entraîneront le rejet de la promesse et l'appel du gestionnaire de rejet.
Exception à la règle
Cependant, une exception se produit lorsque l'erreur est générée en dehors d'un Promettez un rappel. Dans ce cas, Promise.reject() doit être utilisé pour propager l'erreur dans la chaîne Promise. Par exemple, le code suivant ne déclenchera pas le bloc catch :
<code class="javascript">new Promise(function() { setTimeout(function() { throw 'or nah'; // return Promise.reject('or nah'); also won't work }, 1000); }).catch(function(e) { console.log(e); // doesn't happen });</code>
Pour gérer les erreurs générées en dehors d'un rappel de promesse, utilisez Promise.reject() pour les convertir en rejets de promesse.
Conclusion
Bien qu'il n'y ait aucun avantage inhérent à utiliser une méthode plutôt qu'une autre dans un rappel Promise, Promise.reject() est crucial lors de la gestion des erreurs en dehors des rappels Promise. Comprendre cette distinction garantit une gestion appropriée des erreurs et une programmation asynchrone efficace.
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!