AngularJs – Combinando promises


Cuando trabajamos con webservices de los cuales obtenemos datos para nuestra aplicación, muchas veces requerimos hacer varias peticiones, éstas pueden ser separadas individuales que se ejecutan en algún proceso, acción o en la carga principal. Cuando trabajamos en la inicialización o necesitamos cargar un grupo de peticiones al mismo tiempo, podemos combinarlas para que carguen todos los datos al terminar todas las peticiones, con esto nos aseguramos de tener toda la información.

Las promesas (promises) en Javascript, es un objeto que nos ayuda en las operaciones asíncronas (peticiones AJAX) para indicar la finalización correcta o fallida de dicha petición. Como sería en Javascript puro o usando JQuery, a este objeto promise le pasamos las funciones callback para realizar una acción en caso de éxito o fallo.

En caso de que necesitemos realizar varias peticiones ajax y esperar por el resultado para luego utilizarlo en otra petición o necesitemos esperar por todas las peticiones, lo mejor es combinarlos. Comúnmente realizábamos concatenaciones de los callback, uno dentro de otro, de manera que al finalizar uno, continuara con el siguiente, pero esto no es nada práctico y se le conoce como «Callback Hell».

En Angular realizamos las peticiones mediante el servicio $http y aunque también se pueden combinar concatenando los promises, Angular nos provee de una alternativa, el método: $q.all(), donde $q es un servicio de Angular que nos facilita ejecutar funciones asíncronas.

$q.all() nos permite esperar por todas las promesas con un array de objetos y combinarlas como si fuese una sola petición.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *