He leído varios artículos sobre este tema, pero todavía no me queda claro si hay una diferencia entre Promise.reject
vs. lanzar un error. Por ejemplo,
Usando Promise.reject
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
return Promise.reject(new PermissionDenied());
}
});
Usando tiro
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
throw new PermissionDenied();
}
});
Prefiero usar throw
simplemente porque es más corto, pero me preguntaba si hay alguna ventaja de uno sobre el otro.
throw
es que no daría lugar a una promesa rechazada si se lanzara desde una devolución de llamada asincrónica, como un setTimeout. jsfiddle.net/m07van33 @Blondie su respuesta fue correcta.
reject
de mi lista de parámetros.
.then()
controlador detecta la excepción lanzada y la convierte automáticamente en una promesa rechazada. Como he leído que las excepciones lanzadas no son particularmente rápidas de ejecutar, supongo que devolver la promesa rechazada podría ser un poco más rápido de ejecutar, pero tendrías que idear una prueba en varios navegadores modernos si eso fuera importante. Yo personalmente usothrow
porque me gusta la legibilidad.