Sobes.tech
Junior — Middle

¿Cuál es la diferencia entre las funciones Promise.all y Promise.any al manejar promesas?

sobes.tech AI

Respuesta de la IA

Promise.all toma un array de promesas y devuelve una nueva promesa que:

  • se resuelve cuando todas las promesas del array se completan con éxito, devolviendo un array de resultados en el mismo orden;
  • se rechaza si al menos una de las promesas es rechazada, inmediatamente con el error de esa promesa.

Promise.any toma un array de promesas y devuelve una promesa que:

  • se resuelve tan pronto como cualquiera de las promesas se complete con éxito, devolviendo el resultado de esa promesa;
  • se rechaza si todas las promesas son rechazadas, devolviendo un AggregateError con los errores de todas las promesas.

Ejemplo:

const p1 = Promise.reject('Error 1');
const p2 = Promise.resolve('Éxito 2');
const p3 = Promise.resolve('Éxito 3');

Promise.all([p1, p2, p3])
  .then(console.log) // no se llamará
  .catch(console.error); // mostrará 'Error 1'

Promise.any([p1, p2, p3])
  .then(console.log) // mostrará 'Éxito 2'
  .catch(console.error);