Lingua-e
← Errores
JavaScript

Qué significa Promise.all rechazado y cómo solucionarlo

Referencia del error

Promise.all rechazado

Lenguaje

JavaScript

Severidad

Media

Cuándo ocurre

Promise.all() rechaza inmediatamente cuando cualquiera de sus promesas de entrada es rechazada, descartando los resultados de todas las demás promesas incluso si tienen éxito.

Posibles soluciones

Usa Promise.allSettled() para obtener los resultados de todas las promesas independientemente de los fallos individuales. Filtra los resultados por status === 'fulfilled' para extraer los valores exitosos. Usa Promise.all() solo cuando quieras semántica todo o nada.

Más detalles

Promise.all() rechaza inmediatamente cuando cualquiera de sus promesas de entrada es rechazada, descartando los resultados de todas las demás promesas incluso si tienen éxito. Este comportamiento de fallo rápido es intencional pero puede ser sorprendente cuando necesitas los resultados de las promesas exitosas.

Por qué ocurre

  • •Una de las solicitudes paralelas falla mientras otras tienen éxito.
  • •Un error de red, timeout o estado HTTP no OK hace que una promesa sea rechazada.
  • •Una excepción lanzada dentro de una de las operaciones asíncronas se propaga como un rechazo.

Posibles soluciones

Usa Promise.allSettled() para obtener los resultados de todas las promesas independientemente de los fallos individuales. Filtra los resultados por status === 'fulfilled' para extraer los valores exitosos. Usa Promise.all() solo cuando quieras semántica todo o nada.

Ejemplos

JavaScript

Código que causa el error

const results = await Promise.all([
  fetch("/api/users"),
  fetch("/api/missing-endpoint"),  // returns 404, then .json() throws
  fetch("/api/posts"),
]);

Error en la terminal

Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE..." is not valid JSON

Código corregido

const results = await Promise.allSettled([
  fetch("/api/users").then(r => r.json()),
  fetch("/api/missing-endpoint").then(r => r.json()),
  fetch("/api/posts").then(r => r.json()),
]);
const succeeded = results
  .filter(r => r.status === "fulfilled")
  .map(r => r.value);

Practica en inglés

¿Cómo le explicarías un Promise.all Rejected a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Programando en inglés?

Para arreglar esto, leíste inglés técnico real. Lingua-e tiene ejercicios gratis hechos igual: dailys, code reviews y situaciones reales de trabajo.

Practicar inglés para developers gratis