Las promesas son un mecanismo en JavaScript (y, por ende, en TypeScript) que permite manejar operaciones asincrónicas de manera más clara y estructurada. Una promesa representa un valor que puede estar disponible ahora, en el futuro o nunca.
Promesas// Función que devuelve una promesa
function obtenerDatos(): Promise<string> {
return new Promise((resolve, reject) => {
// Simulando una operación asincrónica
setTimeout(() => {
const exito = true; // Cambia a false para simular un error
if (exito) {
resolve("Datos obtenidos con éxito");
} else {
reject("Error al obtener los datos");
}
}, 2000);
});
}
// Uso de la promesa
obtenerDatos()
.then((resultado) => console.log(resultado))
.catch((error) => console.error(error)); Uso de Async/Await para Manejar Operaciones AsincrónicasLa sintaxis async/await permite trabajar con promesas de una manera más sencilla y legible. La palabra clave async se utiliza para declarar una función asincrónica, mientras que await se utiliza para esperar el resultado de una promesa dentro de esa función.
Async/Await// Función asincrónica que utiliza await
async function manejarDatos() {
try {
const resultado = await obtenerDatos();
console.log(resultado);
} catch (error) {
console.error(error);
}
}
// Llamada a la función asincrónica
manejarDatos(); Creación de Promesas:
Uso de Async/Await:
JSONPlaceholder es una API falsa que se puede utilizar para realizar pruebas y prototipos. A continuación, se muestra un ejemplo de cómo usar async/await en TypeScript para realizar una consulta a esta API y obtener una lista de publicaciones.
// Función asincrónica para obtener publicaciones
async function obtenerPublicaciones() {
try {
const respuesta = await fetch("https://jsonplaceholder.typicode.com/posts");
// Verificar si la respuesta es exitosa
if (!respuesta.ok) {
throw new Error(`Error en la red: ${respuesta.status}`);
}
// Convertir la respuesta a formato JSON
const publicaciones = await respuesta.json();
// Mostrar las publicaciones en la consola
console.log(publicaciones);
} catch (error) {
console.error("Error al obtener las publicaciones:", error);
}
}
// Llamada a la función asincrónica
obtenerPublicaciones(); obtenerPublicaciones está declarada como async, lo que permite el uso de await dentro de ella.Consulta a la API:
(respuesta.ok), y si no lo es, se lanza un error.Procesamiento de la Respuesta:
respuesta.json().consola.Manejo de Errores:
try/catch para manejar cualquier error que pueda ocurrir durante la consulta o el procesamiento de la respuesta.