Hablando de promesas - parte 2
Antes de pasar te invito a que leas la primera parte de esta serie y la compartas con tu pareja, tu familia, tu perro, el señor de las tortas, tu crush o con el resto de mundo.
¿No te ha pasado alguna vez que tienes que realizar N cantidad de operaciones asíncronas y realizar otra operación cuando estas terminen?
Hay veces que por XY o Z(chiste pokemon) razón tenemos que hacer peticiones a varios endpoints, realizar múltiples operaciones en una base de datos, escribir una serie de archivos a disco, etc. Este tipo de funcionalidad normalmente solía ser un poco engorrosa ya implicaba sumergirnos en ese lugar llamado callback hell o realizar un proceso muy complejo para obtener la funcionalidad deseada.
Hasta que llegaron las promesas y nos brindaron el casi bendito método all()
Pero, ¿que hace el método all()? Simplemente nos permite pasar como parámetro un arreglo de promesas y obtener los resultados de estas en un arreglo.
Pero como toda promesa puede no cumplirse, el comportamiento del método all lo hace entrar al bloque catch si es que alguna promesa llega a fallar, no importando si las anteriores se cumplieron.
Una forma de evitar esto es agregando un catch a las promesa que mandamos agregamos al arreglo, con esto nos aseguramos de capturar el error y procesarlo de la manera que nos parezca mas conveniente.
Otra función interesante de las promesas es el método .race, básicamente este permite obtener el valor de la primera promesa que se resuelva o rechace en un arreglo de promesas. Esta funcionalidad es muy útil cuando usas diferentes estrategias de caching o networking para la obtención de datos cuando usamos service workers.
Estos solo son algunos de los métodos utilizados por el estándar de promesas de javascript, otras bibliotecas incluyen funcionalidades extra de las que hablaremos en futuras publicaciones y si desean revisar los ejemplos les dejo el repositorio.