Llamo a varios servicios que incluyen llamadas de red y otros servicios asincrónicos en mi aplicación de JavaScript.
Al principio estaba invocando estas promesas una por una. A la larga, se está volviendo difícil de mantener ya que invoco más servicios.
Leí en algún lugar de Internet que podemos usar Promise.all() para agrupar todas las promesas y ejecutar todo a la vez.
El problema es que si alguna de las promesas se rechaza, todas las demás promesas también se rechazan, esto no es lo que necesito.
Estoy trabajando en un panel de estado donde necesito hacer ping a varios servicios y mostrar si el servicio está activo o no. Al usar Promise.all, no funciona de la manera que deseaba.
Intenté otro método Promise.any(), pero solo se resuelve cuando se resuelve cualquiera.
Eché un vistazo a los documentos de MDN, hay muchas funciones para prometer que es abrumador para mí porque soy un principiante en JavaScript.
Actualmente he creado un servicio propio que se encarga de llamar a todas las promesas y cuenta con la respuesta. ¿Hay alguna forma más limpia de hacerlo?
Use Promise.allSettled , luego filtre los que no se cumplieron.
Promise.allSettled([ Promise.resolve(3), Promise.reject(4), Promise.resolve(5), ]) .then((results) => { const allFulfilledValues = results .filter(r => r.status === 'fulfilled') .map(r => r.value); console.log(allFulfilledValues); });