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 throwsimplemente porque es más corto, pero me preguntaba si hay alguna ventaja de uno sobre el otro.
throwes 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.
rejectde 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 usothrowporque me gusta la legibilidad.