Situaciones excepcionales en promesas en JavaScript
Ahora aprendamos a manejar situaciones excepcionales que ocurren dentro de una promesa. En caso de que surja tal situación, debemos rechazar la promesa usando una función especial de rechazo, que automáticamente se incluye en el segundo parámetro de la función de la promesa:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Dentro de la función de la promesa debemos llamar a
resolve si todo salió normalmente, o a
reject si surgió una situación
excepcional:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // datos de la promesa
} else {
reject('error in promise'); // tu texto de error
}
}, 3000);
});
Luego, en el método then debes
pasar no una, sino dos funciones como parámetros: la primera funcionará
si la promesa se ejecutó normalmente (se resolvió),
y la segunda, si se ejecutó con error (se rechazó):
promise.then(
function(result) {
console.log(result); // mostrará el resultado de la promesa
},
function(error) {
console.log(error); // mostrará el texto del error
}
);
Por lo general, el código anterior se escribe de forma más compacta, así:
promise.then(function(result) {
console.log(result); // mostrará el resultado de la promesa
}, function(error) {
console.log(error); // mostrará el texto del error
});
Crea un código asíncrono que genere
números aleatorios del 0 al 5.
Envuelve todo esto en una promesa. Que la promesa como resultado
devuelva el resultado de dividir uno entre el número generado.
Que la promesa se ejecute con error
si ocurrió una división entre cero, y con éxito
en todos los demás casos.