Angular – Principios básicos de las promesas (servicio $ q por $ http)
Promesas
$ HTTP
- ¿Cuál es la mejor manera de organizar el trabajo de un equipo de desarrolladores que trabajan de forma remota en un gran proyecto web?
- ¿Cuáles son las experiencias de las personas que usan Memcached?
- ¿Cuál es la mejor manera de construir tu propio sitio web?
- ¿Cuáles son los algoritmos más utilizados para los desarrolladores de Ruby on Rails?
- ¿Qué funciones de matriz de JavaScript utiliza con frecuencia?
ANGULAR
$ Q
Promesas angulares
Mientras usa Angular y generalmente cuando usa JavaScript en un proyecto de tamaño medio, se encontrará con muchas funciones de devolución de llamada y / o llamadas asincrónicas para recuperar datos del back-end.
Para mantener las cosas tranquilas, las promesas vienen a nuestro rescate.
En este protip, proporcionaré un esqueleto básico para comenzar con el servicio angular $ q para que sepa cómo abordar las promesas.
Características que se muestran en este protip:
– prometen infraestructura básica
– uso de promesa básica con $ http
– escenario avanzado usando promesas con $ http
Introducción de promesa
1) Crear objeto diferido
El objeto diferido controla el estado de la promesa. Podemos activar tres resoluciones: resolver, rechazar y notificar. En los siguientes pasos veremos cómo se relaciona con la configuración de la promesa.
Así es como se crea un objeto diferido:
var diferido = $ q.defer ();
2) Promesa de configuración
Para usar el objeto diferido, necesitamos configurar los controladores de promesa antes. Este será el código ejecutado para cada situación. Los escenarios son: notificación de éxito, fracaso y progreso. El objeto de promesa es una propiedad del objeto diferido.
promesa de var = promesa diferida;
//versión básica
promesa.entonces (fnSuccess)
.catch (fnFailure) // opcional
.finally (fnAlways) // opcional
// versión avanzada
promise.then (fnSuccess, fnFailure, fnNotification)
.catch (fnFailure) // opcional
.finally (fnAlways) // opcional
3) resolución diferida
Una vez que hemos creado el objeto diferido y configurado la promesa, podemos ejecutar nuestro procesamiento asincrónico y activar la promesa con la resolución final.
deferred.resolve (resultObj); // desencadena fnSuccess
deferred.reject (reasonObj); // desencadena fnFailure
deferred.notify (progressObj); // desencadena fnNotification
Uso básico de la promesa $ http
Este ejemplo utiliza una promesa devuelta por una llamada get $ http.
$ http.get (‘movies.json’)
.then (función (respuesta) {
$ scope.movies = response.data;
})
.catch (función (respuesta) {
console.log (response.status);
});
saqueador
Uso avanzado de la promesa $ http
Este ejemplo usa promesas para manejar llamadas $ http detrás de un Servicio. Posteriormente se puede agregar un manejo más complejo al Servicio.
app.factory (“Películas”, función ($ http, $ q) {
regreso {
get: function () {
var diferido = $ q.defer ();
$ http.get (‘movies.json’)
.then (función (respuesta) {
deferred.resolve (response.data);
})
.catch (función (respuesta) {
deferred.reject (respuesta);
});
retorno diferido.promise;
}
}
})
…
app.controller (“MoviesCtrl”, función ($ scope, Movies) {
Movies.get (). Then (function (data) {
$ scope.movies = datos;
})
.catch (función (respuesta) {
console.log (response.status);
});
})
…
saqueador
Recursos
El servicio angular $ q está inspirado en la biblioteca q.
$ q service, $ http service