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.

Fuente: https://dev.to/malik786/javascript-promises-2hn4