J'ai lu plusieurs articles sur ce sujet, mais il n'est toujours pas clair pour moi s'il y a une différence entre Promise.reject
vs et lancer une erreur. Par exemple,
Utilisation de Promise.reject
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
return Promise.reject(new PermissionDenied());
}
});
Utilisation de lancer
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
throw new PermissionDenied();
}
});
Ma préférence est d'utiliser throw
simplement parce qu'il est plus court, mais je me demandais s'il y avait un avantage l'un par rapport à l'autre.
throw
est qu'il ne résulterait pas en une promesse rejetée s'il était lancé à partir d'un rappel asynchrone, tel qu'un setTimeout. jsfiddle.net/m07van33 @Blondie votre réponse était correcte.
reject
de ma liste de paramètres.
.then()
gestionnaire intercepte l'exception levée et la transforme automatiquement en promesse rejetée. Depuis que j'ai lu que les exceptions levées ne sont pas particulièrement rapides à exécuter, je suppose que le retour de la promesse rejetée pourrait être légèrement plus rapide à exécuter, mais vous auriez à concevoir un test dans plusieurs navigateurs modernes si cela était important à savoir. J'utilise personnellementthrow
car j'aime la lisibilité.