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);