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.rejectvs 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 throwsimplement parce qu'il est plus court, mais je me demandais s'il y avait un avantage l'un par rapport à l'autre.
throwest 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.
rejectde 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 personnellementthrowcar j'aime la lisibilité.