Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

unidades:06_promesas:02_q [2014/08/30 11:22]
admin
unidades:06_promesas:02_q [2014/09/01 23:53] (actual)
admin
Línea 2: Línea 2:
 El servicio de [[https://​docs.angularjs.org/​api/​ng/​service/​$q|$q]] es un servicio de AngularJS que contiene toda la funcionalidad de las promesas. Tal y como se indica en su documentación,​ está basado en la implementación de [[http://​documentup.com/​kriskowal/​q|Kris Kowal'​s Q.]]. AngularJS ha hecho su propia versión para que esté todo integrado en el propio framework. El servicio de [[https://​docs.angularjs.org/​api/​ng/​service/​$q|$q]] es un servicio de AngularJS que contiene toda la funcionalidad de las promesas. Tal y como se indica en su documentación,​ está basado en la implementación de [[http://​documentup.com/​kriskowal/​q|Kris Kowal'​s Q.]]. AngularJS ha hecho su propia versión para que esté todo integrado en el propio framework.
  
-El sistema de promesas ​yo lo suelo comparar ​al [[http://​es.wikipedia.org/​wiki/​Problema_Productor-Consumidor|problema del productor-consumidor]]. La similitud es en que hay una parte que generará la información , por ejemplo el método ''​$http''​ y otra parte que consumirá la información,​ por ejemplo nuestro código. Esta separación es importante ya que hay 2 objetos con los que tendremos que tratar.+Yo suelo comparar el sistema de promesas al [[http://​es.wikipedia.org/​wiki/​Problema_Productor-Consumidor|problema del productor-consumidor]]. La similitud es que hay una parte que generará la información , por ejemplo el método ''​$http''​ y otra parte que consumirá la información,​ por ejemplo nuestro código. Esta separación es importante ya que hay 2 objetos con los que tendremos que tratar.
  
-En la nomenclatura de AngularJS al productor se le llama ''​defered''​ y al consumidor se le llama ''​promise''​. Mediante el servicio de ''​$q''​ obtenemos el objeto ''​defered''​ llamando el método ''​defer()''​ y a partir de él obtenemos el objeto ''​promise''​ llamando a la propiedad ''​promise''​+En la nomenclatura de AngularJS al productor se le llama ''​defered''​ y al consumidor se le llama ''​promise''​. Mediante el servicio de ''​$q''​ obtenemos el objeto ''​defered''​ llamando el método ''​defer()''​ y a partir de él obtenemos el objeto ''​promise''​ llamando a la propiedad ''​promise''​.
  
 En el siguiente diagrama UML podemos ver las distintas clases que forman parte de las promesas: En el siguiente diagrama UML podemos ver las distintas clases que forman parte de las promesas:
Línea 42: Línea 42:
  
  
-Una vez creada mediante el método ''​defer()'',​ una promesase ​puede encontrar en alguno de los siguiente 3 estados:+Una vez creada mediante el método ''​defer()'',​ una promesa se puede encontrar en alguno de los siguiente 3 estados:
  
 <uml> <uml>
Línea 80: Línea 80:
 Ya tenemos los 2 objetos preparados y listos para ser usados. Ahora explicaremos más sobre cada uno de ellos. Ya tenemos los 2 objetos preparados y listos para ser usados. Ahora explicaremos más sobre cada uno de ellos.
 ===== defered ===== ===== defered =====
-El objeto ''​defered''​ sólo se usa desde dentro de la función asíncrona, por lo tanto el que llama a ''​sumaAsincrona''​ no sabe nada del objeto ''​defered''​. Como ya hemos dicho, el objeto ''​defered''​ hará las funciones de productor de la información ((aunque realmente no la produce sino que sólo notifica si se ha producido o no))+El objeto ''​defered''​ sólo se usa desde dentro de la función asíncrona, por lo tanto el que llama a ''​sumaAsincrona''​ no sabe nada del objeto ''​defered''​. Como ya hemos dicho, el objeto ''​defered''​ hará las funciones de productor de la información ((aunque realmente no la produce sino que sólo notifica si se ha producido o no)).
  
 Este objeto tiene 2 métodos. Uno de ellos para indicar que se ha obtenido la información y por lo tanto hacer que la promesa pase al estado "​Resuelto"​ y un segundo método para indicar que algo ha fallado y que no se ha podido obtener la información y por lo tanto hacer que la promesa pase al estado "​Rechazado"​. Este objeto tiene 2 métodos. Uno de ellos para indicar que se ha obtenido la información y por lo tanto hacer que la promesa pase al estado "​Resuelto"​ y un segundo método para indicar que algo ha fallado y que no se ha podido obtener la información y por lo tanto hacer que la promesa pase al estado "​Rechazado"​.
  
 ^  Método ​  ^ Parámetros ​ ^  Descripción ​ ^ ^  Método ​  ^ Parámetros ​ ^  Descripción ​ ^
-|  ''​resolve ''​ |  ''​resolve(resultado)'' ​ | Llamaremos a este método para indicar que ya tenemos la información que se solicitó y por lo tanto que la promesa está resuelta. Siendo ​el parámetro ''​resultado''​ el  que contiene la  información solicitada. | +|  ''​resolve ''​ |  ''​resolve(resultado)'' ​ | Llamaremos a este método para indicar que ya tenemos la información que se solicitó y por lo tanto que la promesa está resuelta, siendo ​el parámetro ''​resultado''​ el  que contiene la  información solicitada. | 
-|  ''​reject'' ​ |  ''​reject(error)'' ​ | Llamaremos a este método para indicar que no ha sido posible obtener la información que se solicitó y por lo tanto que la promesa está rechazada. Conteniendo ​el parámetro ''​error''​ información relativa a la naturaleza del error. |+|  ''​reject'' ​ |  ''​reject(error)'' ​ | Llamaremos a este método para indicar que no ha sido posible obtener la información que se solicitó y por lo tanto que la promesa está rechazada, conteniendo ​el parámetro ''​error''​ información relativa a la naturaleza del error. |
  
 <note tip> <note tip>
Línea 118: Línea 118:
   * Línea 10: Si algo ha fallado lo indicamos llamando a ''​reject''​. En este caso pasamos como valor de retorno la propia excepción que se ha generado.   * Línea 10: Si algo ha fallado lo indicamos llamando a ''​reject''​. En este caso pasamos como valor de retorno la propia excepción que se ha generado.
 ===== promise ===== ===== promise =====
-Acabamos de ver lo que hay que hacer internamente para producir la información en la función ''​sumaAsincrona''​. Ahora pasemos al otro lado del problema. Veamos ​lo que ocurre al llamar a nuestra función asíncrona, es decir en la parte del consumidor.+Acabamos de ver lo que hay que hacer internamente para producir la información en la función ''​sumaAsincrona''​. Ahora pasemos al otro lado del problema. Veamos ​qué ocurre al llamar a nuestra función asíncrona, es decir en la parte del consumidor.
  
 Lo primero que debemos hacer es llamar a la función asíncrona y guardarnos la promesa que nos retorna. Lo primero que debemos hacer es llamar a la función asíncrona y guardarnos la promesa que nos retorna.
Línea 193: Línea 193:
  
 <note tip> <note tip>
-Normalmente para abreviar en vez de guardarnos la variable de la promesa y luego llamar al método ''​then''​ se suele hacer todo junto de la siguiente manera:+Normalmentepara abreviaren vez de guardarnos la variable de la promesa y luego llamar al método ''​then''​ se suele hacer todo junto de la siguiente manera:
  
 <sxh js> <sxh js>
unidades/06_promesas/02_q.txt · Última modificación: 2014/09/01 23:53 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0