unidades:06_promesas:01_justificacion
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:06_promesas:01_justificacion [2014/08/15 05:36] – admin | unidades:06_promesas:01_justificacion [2014/08/30 11:13] (actual) – admin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Justificación ====== | + | ====== |
| - | Una " | + | Una " |
| - | Ejemplo sin promesas: | + | |
| + | Voy a volver a explicarlo pero con un ejemplo: | ||
| + | Al hacer una llamada Ajax con [[unidades: | ||
| + | |||
| + | Ahora que quizás ya entiendes la buena idea de las promesas, pasemos a la parte negativa. La promesa tendrá en un futuro el valor pero, ¿cómo nos enteramos de que ahora la promesa ya tiene el valor? Pues usando una función de // | ||
| + | |||
| + | ===== Pirámide de la muerte ===== | ||
| + | Realmente no podemos evitar las funciones de // | ||
| + | |||
| + | Podemos ver cómo queda la pirámide de la muerte en el siguiente ejemplo. | ||
| + | |||
| + | Obtenemos el fichero json " | ||
| <sxh js> | <sxh js> | ||
| $scope.importeTotal = 0; | $scope.importeTotal = 0; | ||
| Línea 22: | Línea 33: | ||
| </ | </ | ||
| + | <note tip> | ||
| + | Hemos quitado las funciones de error para que se vea mejor el ejemplo. | ||
| + | </ | ||
| - | Ejemplo con **promesas** | + | Vemos cómo estamos añadiendo funciones dentro de funciones lo que hace que el código esté cada vez mas identado lo que crea una forma de pirámide y da nombre al problema. |
| + | |||
| + | El problema de ésto es que el código es poco modular, cada una de las funciones de // | ||
| + | |||
| + | Veamos ahora el mismo ejemplo usando | ||
| <sxh js> | <sxh js> | ||
| $scope.importeTotalPromesas = 0; | $scope.importeTotalPromesas = 0; | ||
| Línea 42: | Línea 60: | ||
| }) | }) | ||
| </ | </ | ||
| + | |||
| + | Aunque aún no hemos explicado cómo funcionan las promesas, vemos en este ejemplo que ahora no hay 4 funciones independientes y que no están anidadas por lo que es mas sencillo separarlas en funciones independientes. | ||
| + | |||
| + | ===== Otras ventajas ===== | ||
| + | Siempre que se habla de las promesas se explica que resuelven el problema de la pirámide de la muerte pero desde mi punto de vista tienen otras ventajas que las hacen también útiles: | ||
| + | * [[# | ||
| + | * [[# | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== API Unificado ==== | ||
| + | En el entorno de JavaScript se produce mucho el fenómeno de llamadas asíncronas y el consiguiente uso de // | ||
| + | |||
| + | Para poner las distintas formas , vamos a suponer lo siguiente. | ||
| + | * Un método llamado " | ||
| + | * Si todo funciona correctamente , una función de // | ||
| + | * Si algo falla, una función de // | ||
| + | |||
| + | |||
| + | <sxh js> | ||
| + | llamadaAsincrona(" | ||
| + | | ||
| + | }, | ||
| + | | ||
| + | }); | ||
| + | </ | ||
| + | En la propia llamada se pasan las 2 funciones de callback | ||
| + | |||
| + | <sxh js> | ||
| + | llamadaAsincrona(" | ||
| + | | ||
| + | }).error(function(codError, | ||
| + | | ||
| + | }); | ||
| + | </ | ||
| + | Ahora la función '' | ||
| + | |||
| + | <sxh js> | ||
| + | llamadaAsincrona(" | ||
| + | | ||
| + | }, | ||
| + | | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Ahora se retorna un objeto con un método '' | ||
| + | |||
| + | <sxh js> | ||
| + | llamadaAsincrona(" | ||
| + | | ||
| + | }, | ||
| + | | ||
| + | }); | ||
| + | </ | ||
| + | Este caso es como el anterior pero en vez de pasar 2 argumentos en las funciones de // | ||
| + | |||
| + | Como vemos, hay muchas formas de hacer las funciones de // | ||
| + | |||
| + | <note important> | ||
| + | Hay que decir que el servicio [[unidades: | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Resueltos antes de llamar al controlador ==== | ||
| + | Lo que vamos a explicar ahora es para mí la mayor ventaja de las promesas y es el verdadero motivo por el que las explico ahora en vez de dejarlas como algo avanzado para el final. | ||
| + | |||
| + | Hemos visto en los controladores cómo hacemos llamadas a '' | ||
| + | |||
| + | No vamos ahora a contar el sistema de rutas ni cómo funciona. Eso lo dejamos para la próxima unidad ((Exactamente en el tema de [[unidades: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== Ejemplo ===== | ===== Ejemplo ===== | ||
unidades/06_promesas/01_justificacion.1408073819.txt.gz · Última modificación: por admin
