Método reject() de JavaScript Promise

La programación asincrónica se ha vuelto cada vez más popular en la industria del desarrollo de software. Uno de los enfoques más utilizados para manejar operaciones asincrónicas son las promesas (promises en inglés) en JavaScript. Las promesas son objetos que representan la eventual terminación (o fracaso) de una operación asincrónica y su resultado.
El método reject() de JavaScript Promise se utiliza para rechazar una promesa y devolver el motivo de rechazo. Este método toma un argumento, el motivo de rechazo, que puede ser cualquier valor.
Sintaxis
Promise.reject(motivo);
Donde "motivo" es el valor que se va a utilizar para el rechazo de la promesa.
Descripción
El método reject() devuelve una nueva promesa que ha sido rechazada con la razón especificada. Si la razón no es un objeto Error, entonces se convierte en un objeto. Si se pasa una promesa como argumento, esa promesa se convierte en la promesa devuelta por reject().
El método reject() es utilizado para manejar errores durante el proceso de una promesa. Cuando se llama a reject(), la promesa se marca como "rechazada" y se pasa el motivo de rechazo. Después de la promesa ha sido rechazada, su cadena de then() se salta y la cadena de catch() se ejecuta.
Ejemplo
Supongamos que tenemos una función asincrónica llamada "obtenerDatos()" que devuelve datos en formato JSON. Si ocurre un error durante la obtención de los datos, rechazamos la promesa y devolvemos un objeto Error. El siguiente código muestra cómo podríamos utilizar el método reject() para manejar este caso:
function obtenerDatos() {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "datos.json");
xhr.onload = function() {
if (xhr.status === 200) {
resolve(JSON.parse(xhr.responseText));
}
else {
reject(new Error("Error al obtener los datos"));
}
};
xhr.onerror = function() {
reject(new Error("Error en la conexión"));
};
xhr.send();
});
}
obtenerDatos()
.then(function(datos) {
console.log(datos);
})
.catch(function(error) {
console.log(error);
});
En el ejemplo anterior, si el servidor devuelve un código de estado diferente de 200, la promesa se "rechaza" y se devuelve un objeto Error con el mensaje correspondiente. Luego, la cadena de catch() se ejecuta y el mensaje de error se muestra en la consola del navegador.
Conclusión
El método reject() es una herramienta útil para manejar errores y rechazar promesas en JavaScript. Permite manejar errores en procesos asincrónicos de manera más efectiva y mejorar la usabilidad de nuestros sistemas.
Utilizar el método reject() y las promesas en general, nos permite escribir código más legible y fácilmente mantenible, con una sintaxis más clara que los callbacks anidados.
Preguntas frecuentes
¿Qué pasa si se llama a reject() en una promesa ya resuelta?
Si se llama a reject() en una promesa ya resuelta, no ocurrirá nada porque la promesa ya está resuelta y no puede ser rechazada.
¿Es necesario utilizar el método catch() después de reject()?
Sí, es necesario utilizar el método catch() para manejar el rechazo de una promesa. Si no lo hacemos, el error se propagará y podría generar un error en la aplicación.
¿Las promesas rechazadas se pueden recuperar?
Sí, las promesas rechazadas se pueden recuperar usando el método catch(). La cadena de catch() se ejecutará si ocurre un error en la promesa.
¿Cómo se pueden mejorar los mensajes de error devueltos por reject()?
Se pueden crear objetos Error personalizados y pasarlos como argumento a reject(), de manera que los mensajes de error sean más descriptivos y fáciles de entender. Por ejemplo, en lugar de pasar una cadena de texto simple, podemos pasar un objeto Error con propiedades adicionales que describan el tipo de error.
Ejemplos de codigos y comandos utilizados:
En el ejemplo anterior se utilizó el comando JSON.parse() para convertir una cadena JSON en un objeto JavaScript.
La sintaxis de una promesa es:
new Promise(function(resolve, reject) {
// cuerpo de la promesa
});
Para crear un objeto Error personalizado:
var errorPersonalizado = new Error("No se pudo obtener los datos");
errorPersonalizado.tipo = "Error al obtener los datos";
errorPersonalizado.codigo = 500;
[nekopost slugs="inicializar-la-fecha-de-javascript-a-una-zona-horaria-particular,ejecutando-la-funcion-javascript-cuando-se-carga-la-pagina,verifique-el-objeto-de-valor-javascript,eliminar-todos-los-caracteres-no-alfanumericos-en-javascript,javascript-clear-timeout-clear-interval-metodo,anadir-valores-de-valores-javascript,textcontent-javascript,como-obtener-la-matriz-de-personajes-de-string-en-javascript,metodo-max-javascript"]

Deja una respuesta