Promesas de JavaScript
Una Promesa representa el resultado de una tarea asíncrona.
Usas Promesas para llamadas a APIs, consultas a bases de datos y lectura de archivos.
Una Promesa tiene tres estados:
- Pendiente (Pending): La tarea aún se está ejecutando.
- Cumplida (Fulfilled): La tarea finalizó con éxito.
- Rechazada (Rejected): La tarea falló con un error.
La estructura es la siguiente:
const promise = new Promise((resolve, reject) => {
// El ejecutor se ejecuta inmediatamente
});
Manejas los resultados con estos métodos:
- .then(): Se ejecuta cuando la promesa tiene éxito.
- .catch(): Se ejecuta cuando la promesa falla.
- .finally(): Se ejecuta cuando la tarea termina, independientemente del resultado.
Reglas importantes para recordar:
- El primer resultado gana. Si llamas a resolve() y luego a reject(), gana resolve().
- La función ejecutora se ejecuta de forma síncrona.
- Usar async y await hace que tu código sea más fácil de leer que usar .then().
Manejo de múltiples promesas:
- Promise.all(): Sigue un enfoque de "fallo rápido" (fail-fast). Si una promesa falla, todo el grupo falla.
- Promise.allSettled(): Espera a que todas las promesas terminen. Devuelve los resultados incluso si algunas tareas fallan.
Resumen:
- Promise: Un manejador de resultados asíncronos.
- resolve: Marca el éxito.
- reject: Marca el fallo.
- async/await: Una forma más limpia de escribir promesas.
- Promise.all: Se detiene ante el primer error.
- Promise.allSettled: Completa todas las tareas.
